
اگه تو دنیای وب و برنامهنویسی باشی، احتمالاً اسم JWT رو زیاد شنیدی. یه روش خفن برای احراز هویت و انتقال اطلاعات بین کلاینت و سروره که هم سبکه، هم امن. تو این مقاله قراره خیلی راحت و خودمونی بفهمیم JWT چیه، چجوری کار میکنه و کجاها میشه ازش استفاده کرد.
JWT یا همون JSON Web Token یه استاندارد برای ایجاد توکنهای امن توی فرمت JSON هست. این توکنها معمولاً برای احراز هویت و ارسال اطلاعات بین کلاینت و سرور استفاده میشن. وقتی یه کاربر لاگین میکنه، سرور یه JWT میسازه و برای کلاینت میفرسته. بعدش، کلاینت توی درخواستهای بعدی این توکن رو میفرسته تا سرور بدونه این یارو کیه و آیا اجازه دسترسی داره یا نه.
JWT سه بخش داره که با نقطه (.) از هم جدا شدن:
Header (هدر): این بخش اطلاعاتی مثل نوع توکن و الگوریتم رمزنگاری رو مشخص میکنه. مثلاً:

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

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

کاربر لاگین میکنه و اطلاعاتش رو میفرسته.
سرور اطلاعات رو بررسی میکنه و یه JWT میسازه.
کلاینت این توکن رو ذخیره میکنه (مثلاً تو localStorage).
هر بار که میخواد به یه بخش خاص دسترسی داشته باشه، توکن رو میفرسته.
سرور توکن رو بررسی میکنه، اگه معتبر بود، اجازه دسترسی میده.
مزایا و معایب JWT
✅ بدون نیاز به سشن (Stateless): نیازی نیست سرور اطلاعات سشن رو نگه داره. ✅ امنیت بالا: دادهها رمزنگاری میشن و فقط سرور میتونه اونارو تایید کنه. ✅ سبک و سریع: چون فقط یه رشته متنیه، انتقالش راحت و سریعه. ✅ سازگاری بالا: میشه تو سیستمهای مختلف مثل موبایل، وب، و میکروسرویسها استفاده کرد.
❌ امکان لغو کردن نداره: وقتی یه توکن ساخته شد، تا زمان انقضاش معتبره، مگر اینکه توی یه لیست سیاه ذخیره بشه. ❌ حجم بیشتر نسبت به کوکیهای سشن: چون شامل امضا و دادههای اضافهست. ❌ مدیریت کلید رمزنگاری مهمه: اگه کلید خصوصی لو بره، فاجعه میشه!
از الگوریتمهای قوی مثل RS256 استفاده کن.
مدت اعتبار کوتاه تنظیم کن تا در صورت سرقت، مشکل ایجاد نشه.
فقط از HTTPS استفاده کن تا توکن توی مسیر لو نره.
توکنها رو توی کوکی HttpOnly ذخیره کن تا جلوی حملات XSS رو بگیری.
یه لیست سیاه برای توکنهای لغو شده داشته باش.
احراز هویت توی APIها
مدیریت سشن بدون نیاز به ذخیره اطلاعات روی سرور
مجوزدهی توی سیستمهای توزیعشده
اشتراکگذاری اطلاعات بین سیستمهای مختلف (مثلاً لاگین یکپارچه - SSO)
JWT یه روش امن و سریع برای احراز هویت و انتقال داده بین کلاینت و سروره. استفاده درست ازش باعث میشه هم امنیت بالا بره، هم کارایی سیستم بهتر بشه. ولی باید حواست باشه که نکات امنیتی رو رعایت کنی تا دچار مشکل نشی.