ویرگول
ورودثبت نام
Sedali
Sedaliیه پسری که کل عمرش دنبال این بود که یه Div رو center کنه:)
Sedali
Sedali
خواندن ۲ دقیقه·۶ ماه پیش

راهنمای کامل JWT (JSON Web Token)

اگه تو دنیای وب و برنامه‌نویسی باشی، احتمالاً اسم JWT رو زیاد شنیدی. یه روش خفن برای احراز هویت و انتقال اطلاعات بین کلاینت و سروره که هم سبکه، هم امن. تو این مقاله قراره خیلی راحت و خودمونی بفهمیم JWT چیه، چجوری کار می‌کنه و کجاها میشه ازش استفاده کرد.

JWT چیه؟

JWT یا همون JSON Web Token یه استاندارد برای ایجاد توکن‌های امن توی فرمت JSON هست. این توکن‌ها معمولاً برای احراز هویت و ارسال اطلاعات بین کلاینت و سرور استفاده میشن. وقتی یه کاربر لاگین می‌کنه، سرور یه JWT می‌سازه و برای کلاینت می‌فرسته. بعدش، کلاینت توی درخواست‌های بعدی این توکن رو می‌فرسته تا سرور بدونه این یارو کیه و آیا اجازه دسترسی داره یا نه.

ساختار JWT

JWT سه بخش داره که با نقطه (.) از هم جدا شدن:

  1. Header (هدر): این بخش اطلاعاتی مثل نوع توکن و الگوریتم رمزنگاری رو مشخص می‌کنه. مثلاً:

Payload (بدنه): اینجا اطلاعات اصلی مثل شناسه کاربر و زمان صدور توکن ذخیره میشه:

  • sub همون شناسه کاربره.

  • name اسم کاربره.

  • iat زمان صدور توکن رو نشون میده.

۳. Signature (امضا): برای اطمینان از اینکه توکن دستکاری نشده، یه امضا روی اون زده میشه:

JWT چجوری کار می‌کنه؟

  1. کاربر لاگین می‌کنه و اطلاعاتش رو می‌فرسته.

  2. سرور اطلاعات رو بررسی می‌کنه و یه JWT می‌سازه.

  3. کلاینت این توکن رو ذخیره می‌کنه (مثلاً تو localStorage).

  4. هر بار که می‌خواد به یه بخش خاص دسترسی داشته باشه، توکن رو می‌فرسته.

  5. سرور توکن رو بررسی می‌کنه، اگه معتبر بود، اجازه دسترسی میده.

مزایا و معایب JWT

مزایا:

✅ بدون نیاز به سشن (Stateless): نیازی نیست سرور اطلاعات سشن رو نگه داره. ✅ امنیت بالا: داده‌ها رمزنگاری میشن و فقط سرور می‌تونه اونارو تایید کنه. ✅ سبک و سریع: چون فقط یه رشته متنیه، انتقالش راحت و سریعه. ✅ سازگاری بالا: میشه تو سیستم‌های مختلف مثل موبایل، وب، و میکروسرویس‌ها استفاده کرد.

معایب:

❌ امکان لغو کردن نداره: وقتی یه توکن ساخته شد، تا زمان انقضاش معتبره، مگر اینکه توی یه لیست سیاه ذخیره بشه. ❌ حجم بیشتر نسبت به کوکی‌های سشن: چون شامل امضا و داده‌های اضافه‌ست. ❌ مدیریت کلید رمزنگاری مهمه: اگه کلید خصوصی لو بره، فاجعه میشه!

چجوری امنیت JWT رو بالا ببریم؟

  1. از الگوریتم‌های قوی مثل RS256 استفاده کن.

  2. مدت اعتبار کوتاه تنظیم کن تا در صورت سرقت، مشکل ایجاد نشه.

  3. فقط از HTTPS استفاده کن تا توکن توی مسیر لو نره.

  4. توکن‌ها رو توی کوکی HttpOnly ذخیره کن تا جلوی حملات XSS رو بگیری.

  5. یه لیست سیاه برای توکن‌های لغو شده داشته باش.

کاربردهای JWT

  • احراز هویت توی APIها

  • مدیریت سشن بدون نیاز به ذخیره اطلاعات روی سرور

  • مجوزدهی توی سیستم‌های توزیع‌شده

  • اشتراک‌گذاری اطلاعات بین سیستم‌های مختلف (مثلاً لاگین یکپارچه - SSO)

نتیجه‌گیری

JWT یه روش امن و سریع برای احراز هویت و انتقال داده بین کلاینت و سروره. استفاده درست ازش باعث میشه هم امنیت بالا بره، هم کارایی سیستم بهتر بشه. ولی باید حواست باشه که نکات امنیتی رو رعایت کنی تا دچار مشکل نشی.

احراز هویتjwtبرنامه نویسیامنیت
۱
۰
Sedali
Sedali
یه پسری که کل عمرش دنبال این بود که یه Div رو center کنه:)
شاید از این پست‌ها خوشتان بیاید