راهنمای احراز هویت JWT API

Tokens JSON WEB (JWT) یک روش مطمئن برای تأیید اعتبار درخواست های API بدون تکیه بر جلسات سمت سرور است. آنها جمع و جور ، بدون تابش و برای اطمینان از یکپارچگی داده ها طراحی شده اند. در اینجا آنچه شما باید بدانید آورده شده است:
- JWT چیست؟ JWT نشانه ای با سه قسمت است – هدر ، بار و امضا. این مؤلفه ها با هم کار می کنند تا اعتبار توکن را تأیید کرده و از دستکاری جلوگیری کنند.
- چرا از JWT استفاده می کنیم؟ این سریع ، مقیاس پذیر است و نیاز به ذخیره جلسه سمت سرور را از بین می برد. به علاوه ، از تأیید اعتبار متقابل پشتیبانی می کند و شامل انقضا داخلی برای امنیت اضافه شده است.
- چگونه کار می کند؟ سرور پس از ورود موفقیت آمیز JWT ایجاد می کند. مشتری این نشانه را ذخیره می کند و آن را در درخواست های آینده برای تأیید اعتبار درج می کند.
- ویژگی های کلیدی: تأیید صحت ، کنترل انقضا و اعتبار سنجی ادعا می کند که نشانه ها ایمن و قابل اعتماد هستند.
برای امنیت بهتر ، نشانه های ایمن (به عنوان مثال ، کوکی های httponly) را ذخیره کنید و از اشتباهات رایج مانند پرش از اعتبار یا استفاده از کلیدهای ضعیف جلوگیری کنید.
فهرست مطالب
ساختار JWT
اجزای اصلی JWT
یک توکن وب JSON (JWT) از سه بخش تشکیل شده است: هدر ، بار و امضای. این قسمت ها با فرمت Base64URL رمزگذاری شده و با نقاط جدا می شوند.
- هدر: حاوی ابرداده ، از جمله نوع توکن و الگوریتم امضای.
- بار: شامل داده های واقعی ، معروف به ادعاها ، منتقل می شود.
- امضاء: صحت توکن را تضمین می کند و تأیید می کند که با آن دستکاری نشده است.
این هدر به طور معمول شامل دو قسمت است:
-
"typ"
: نوع توکن (همیشه “JWT”) را مشخص می کند. -
"alg"
: الگوریتم امضای را نشان می دهد (به عنوان مثال ، “HS256” ، “RS256”).
Payload شامل ادعاهایی است که اطلاعات مربوط به کاربر و ابرداده است. ادعاهای متداول عبارتند از:
-
"iss"
: صادرکننده توکن را مشخص می کند. -
"sub"
: به موضوع نشانه اشاره دارد. -
"exp"
: زمان انقضا را مشخص می کند که پس از آن نشانه نامعتبر است. -
"iat"
: نشان می دهد چه زمانی نشانه صادر شده است. -
"aud"
: مخاطبان مورد نظر را برای نشانه تعریف می کند.
حال ، بیایید یک مثال JWT را تجزیه کنیم تا ببینیم این مؤلفه ها چگونه کار می کنند.
تجزیه نمونه JWT
در اینجا مثالی از JWT آورده شده است:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
این نشانه را می توان به شرح زیر تقسیم کرد:
هدر (رمزگشایی شده):
{
"alg": "HS256",
"typ": "JWT"
}
بار بار (رمزگشایی شده):
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
امضا با ترکیب هدر رمزگذاری شده و بارگذاری بار با یک کلید مخفی ، با استفاده از الگوریتم مشخص شده در عنوان تولید می شود. این فرآیند یکپارچگی توکن را تضمین می کند و تأیید می کند که در هنگام انتقال تغییر نکرده است.
JWTS چندین مزیت ارائه می دهد:
- اعتبار سنجی سریع: سرورها می توانند بدون نیاز به پرس و جو از پایگاه داده ، نشانه ها را تأیید کنند.
- صداقت ساخته شده: دستکاری با نشانه ، امضای را باطل می کند.
- ادعاهای سفارشی: برای نیازهای خاص می توانید مطالبات اضافی را در بار بار درج کنید.
- طراحی جمع و جور: رمزگذاری Base64URL باعث می شود که نشانه های URL-SAFE و آسان انجام شود.
مکانیسم های امنیتی JWT
مراحل احراز هویت
احراز هویت JWT به طور معمول شامل این مراحل است:
- احراز هویت اولیه: کاربر اعتبار خود را برای تأیید به سرور تأیید اعتبار (مثال AUTH0) ارسال می کند.
- نسل: اگر اعتبار معتبر باشد ، سرور JWT حاوی مطالبات کلیدی تولید می کند.
- درخواست پردازش: مشتری با اطمینان JWT را ذخیره می کند و آن را در عنوان مجوز درخواست های آینده گنجانده است. این به سرور اجازه می دهد تا امضای ، انقضا و ادعای توکن را تأیید کند:
Authorization: Bearer [token]
این مراحل در کنار اقدامات مهم امنیتی که در زیر ذکر شده است ، کار می کنند.
عناصر امنیتی
JWT ها امنیت API را از طریق چندین مکانیسم مهم تقویت می کنند:
تأیید امضاء امضای یکپارچگی توکن را با استفاده از الگوریتم های رمزنگاری تضمین می کند:
| الگوریتم | سطح امنیت | استفاده مشترک | | ——— | ————– | —————– | | HS256 | عالی | خدمات داخلی | | Rs256 | بسیار بالا | API های عمومی | | ES256 | بسیار بالا | برنامه های تلفن همراه |
کنترل انقضا JWT ها شامل ادعاهایی برای مدیریت اعتبار آنها هستند:
-
exp
(زمان انقضا): زمان دقیق انقضا توکن را مشخص می کند. -
iat
(صادر شده در: هنگامی که نشانه ایجاد شد ، مارک می کند. -
nbf
(نه قبل): نشانگر اولین زمان معتبر است.
اعتبار سنجی بررسی ادعاهایی مانند iss
(صادرکننده) ، aud
(مخاطب) ، sub
(موضوع) ، و jti
(JWT ID) با اطمینان از برآورده شدن ارزشهای مورد انتظار ، امنیت توکن را تقویت می کند.
محافظت از بار در حالی که JWT ها بارهای را به طور پیش فرض رمزگذاری نمی کنند ، داده های حساس را می توان از طریق آن محافظت کرد:
- از جمله فقط اطلاعات ضروری در مطالبات.
- با استفاده از نشانه های مرجع برای داده های حساس.
- تنظیم زمان انقضا کوتاه.
- اتخاذ شیوه های امن مدیریت کلیدی.
برای تنظیمات امنیتی پیشرفته ، توسعه دهندگان API به طور معمول احراز هویت JWT را در یک دروازه API (مثال Zuplo) پیاده سازی می کنند تا منطق را می توان در یک کاتالوگ API اعمال کرد. برخی از تکنیک های پیشرفته که در این مقاله پوشش داده نشده است شامل Scopes JWT است – که می توانید در این راهنما تأیید کنید.
دستورالعمل های اجرا
امضای و تأیید
امضای و تأیید JWT برای تأمین API ها ضروری است. اطمینان حاصل کنید که کلیدهای خصوصی به طور ایمن ذخیره می شوند – از متغیرهای محیط یا سیستم های مدیریت کلیدی استفاده کنید. از افشای کلیدها در کد منبع یا برنامه های سمت مشتری خودداری کنید.
یک الگوریتم امضای را انتخاب کنید که با الزامات امنیتی شما هماهنگ باشد:
| الگوریتم نوع | طول کلید | بهترین مورد استفاده | | ————– | ———- | ——————————————— | | HMAC-sha256 | 256 بیتی | خدمات داخلی یا مجموعه های تک سرور | | RSA-SHA256 | 2048 بیتی+ | API های عمومی یا سیستم های توزیع شده | | ECDSA-P256 | 256 بیتی | برنامه های تلفن همراه یا محیط های کم منبع |
مدیریت مناسب توکن گام بعدی برای محافظت از جلسات API است.
مدیریت
مدیریت نشانه ها به طور موثری تعامل API امن را تضمین می کند. در اینجا چگونه:
توصیه های ذخیره سازی توکن
- استفاده کردن کوکی های httponly برای برنامه های وب یا کلیدهای امن برای برنامه های تلفن همراه.
- از ذخیره نشانه ها در
localStorage
یاsessionStorage
برای کاهش خطر حملات XSS.
دستورالعمل های انقضا
- طول عمر کوتاه را برای نشانه های دسترسی (30-30 دقیقه) تنظیم کنید.
- از طول عمر طولانی تر برای نشانه های تازه (7-14 روز) استفاده کنید.
- برای حفظ امنیت ، چرخش خودکار توکن را اجرا کنید.
این روشها در کنار حمایت های داخلی JWT مانند رمزگذاری بار و اعتبار سنجی امضای کار می کنند.
اشتباهات رایج
از این خطاهای اجرای JWT متداول پاک کنید:
- اعتبار سنجی: همیشه امضای توکن را تأیید کنید و ادعای اطمینان از صحت را داشته باشید.
- با استفاده از کلیدهای ضعیف: کلیدهای رمزنگاری قوی با طول و تصادفی کافی تولید کنید.
- کمبود مکانیسم ابطال: لیست سیاه نشانه یا سایر روشهای ابطال را برای نشانه های به خطر بیاندازید.
- جزئیات خطای را آشکار می کند: از افشای اطلاعات حساس در پیام های خطا خودداری کنید. به عنوان مثال:
// Correct approach
return {
status: 401,
message: "Authentication failed",
};
// Incorrect approach
return {
status: 401,
message: "Invalid signature algorithm: HS512",
};
ویدئو: JWT چیست و چرا باید از JWT استفاده کنید
در صورت خواندن سبک یادگیری شما نیست – در اینجا خلاصه ای از آنچه در بالا صحبت کردیم وجود دارد.
https://www.youtube.com/watch؟v=7q17ubqlfam
خلاصه
احراز هویت JWT با استفاده از یک ساختار توکن استاندارد که به گونه ای مقاوم در برابر دستکاری طراحی شده است ، از API ها محافظت می کند. برای اجرای مؤثر JWT ، روی این سه زمینه اصلی تمرکز کنید:
- امضای توکن: الگوریتم مناسب را برای نیازهای خود ، مانند Rs256 ، HS256 یا ES256 انتخاب کنید.
- فرآیند اعتبار سنجی: همیشه قبل از اعطای دسترسی ، یکپارچگی ، انقضا و مطالبات توکن را بررسی کنید.
- مدیریت چرخه عمر: از زمان انقضا مناسب استفاده کنید و استراتژی های چرخش توکن را برای حفظ امنیت اتخاذ کنید.
دروازه API Zuplo با ارائه ادغام داخلی با ارائه دهندگان هویت مورد علاقه خود از جمله Auth0 ، Clerk ، Cognito ، Firebase ، Okta ، Propelauth ، Supabase ، تصویب تأیید اعتبار JWT را در سراسر API خود ساده می کند.
علاوه بر این ، Zuplo کاملاً قابل برنامه ریزی است و به شما امکان می دهد کد را در دروازه بنویسید تا کارهایی مانند مسیریابی هوشمند API را بر اساس محتوای JWT ، اجرای کنترل های دسترسی سفارشی یا استفاده از خوزه برای اعتبارسنجی JWT برای ارائه دهندگان هویت انجام دهیم. امروز ما را به صورت رایگان امتحان کنید!
منابع مرتبط