JWT چیست و از چه بخشهایی تشکیل شده است؟
JWT که در استاندارد RFC 7519 تعریف شده، رشتهای است از سه بخش که با نقطه از هم جدا میشوند: header، payload و signature. هر کدام از دو بخش اول یک شیء JSON است که با Base64URL کدگذاری شده؛ یعنی نسخهای از Base64 که بهجای + و / از - و _ استفاده میکند و علامت = انتهایی را حذف میکند تا توکن بدون مشکل در آدرس و هدر HTTP جا شود.
header معمولاً دو فیلد دارد: alg که الگوریتم امضا را مشخص میکند و typ که مقدارش JWT است؛ گاهی kid هم برای مشخص کردن کلید امضا آمده است. payload شامل ادعاها یا claimها است؛ اطلاعاتی مثل شناسهٔ کاربر، نقش، زمان صدور و زمان انقضا. بخش سوم امضای دیجیتال دو بخش قبلی است که با کلید صادرکننده ساخته میشود.
نکتهٔ کلیدی که خیلیها فراموش میکنند: JWT معمولی رمزنگاری نمیشود، فقط امضا میشود. هر کسی توکن را داشته باشد، بدون هیچ کلیدی میتواند محتوای payload را بخواند؛ همان کاری که این ابزار انجام میدهد. امضا فقط تضمین میکند محتوا دستکاری نشده است.