نحوه استفاده
- یک توکن را از سرآیند Authorization، یک کوکی یا ابزارهای توسعهدهنده مرورگر کپی کنید. عبارت “Bearer ” در ابتدا بهطور خودکار حذف میشود.
- آن را در کادر قرار دهید. سرآیند و payload بهصورت JSON فرمتشده نمایش داده میشوند.
- نوار وضعیت و جدول کلیمها را برای صادرکننده، مخاطب و تاریخهای انقضا به وقت محلی خود بررسی کنید.
- اگر به آن در جای دیگری نیاز دارید، JSON سرآیند یا payload را کپی کنید.
نحوه کار
یک توکن وب JSON (JWT، RFC 7519) در حالت امضاشدهٔ رایج خود (JWS) از سه بخش کدگذاریشده با base64url تشکیل شده که با نقطه از هم جدا شدهاند. هدر مشخص میکند که توکن با کدام الگوریتم امضا شده است؛ برای مثال HS256 (HMAC با SHA-256) یا RS256 (RSA). بخش payload شامل claimها است: اظهاراتی دربارهٔ کاربر و خود توکن. امضا به سرور اجازه میدهد بررسی کند که هدر و payload تغییر نکردهاند.
هدر و payload فقط کدگذاری شدهاند، نه رمزنگاری. هر کسی که توکن را داشته باشد میتواند محتوایش را بخواند؛ کاری که این ابزار دقیقاً انجام میدهد. دادههای محرمانه را در payloadهای JWT قرار ندهید.
کدگشایی بهتنهایی هیچچیز را دربارهٔ اعتبار توکن ثابت نمیکند. بدون کلید صادرکننده، هیچکس نمیتواند بگوید امضا واقعی است یا نه؛ بنابراین هرگز نباید از نتیجهٔ اینجا برای تصمیمگیری دربارهٔ اعتماد به توکن استفاده کرد. اعتبارسنجی باید روی سرور شما انجام شود، با یک کتابخانهٔ JWT نگهداریشده که امضا، الگوریتم، exp، nbf، iss و aud را بررسی میکند.
claimهای ثبتشده در جدول توضیح داده شدهاند. exp، nbf و iat مقادیر NumericDate هستند: ثانیه از ۱ ژانویهٔ ۱۹۷۰ UTC. ابزار آنها را به تاریخ در منطقهٔ زمانی شما تبدیل میکند و با ساعت دستگاه شما مقایسه میکند، بدون تلورانس کوچکی که سرورها معمولاً برای اختلاف ساعت در نظر میگیرند. اگر ساعت دستگاه شما نادرست باشد، وضعیت نیز نادرست خواهد بود.
توکنهای پنجقسمتی JWT رمزنگاریشده (JWE) هستند. payload آنها بدون کلید قابل کدگشایی نیست، بنابراین ابزار فقط قالب را گزارش میکند.
نمونهها
چرا API من خطای 401 برمیگرداند؟
توکن دسترسیای را که برنامهٔ شما ارسال میکند کدگشایی کنید. اگر خط وضعیت میگوید «منقضیشده در …»، کلاینت باید توکن را تازهسازی کند. اگر aud مقدار https://api.example.com را نشان میدهد اما شما https://api2.example.com را صدا میزنید، audience مطابقت ندارد.
بررسی یک توکن شناسه OpenID Connect
یک توکن شناسه از ارائهدهنده ورود شامل iss (ارائهدهنده)، sub (شناسه کاربر ثابت)، aud (شناسه کلاینت شما)، iat و exp بههمراه مشخصات پروفایل مانند ایمیل و نام است. رمزگشایی آن نشان میدهد برنامه شما واقعاً چه کلیمهایی دریافت میکند.
خواندن کلیم timestamp
یک payload شامل "exp": 1735689600 است. جدول کلیمها آن را بهصورت 1 January 2025, 00:00:00 UTC نشان میدهد و به وقت محلی شما تبدیل میکند؛ همچنین نشان میدهد که آن زمان چهقدر گذشته یا چهقدر در آینده است.
پرسشهای متداول
آیا این ابزار امضای JWT را تأیید میکند؟
خیر. فقط سرآیند و payload را رمزگشایی میکند. تأیید امضا به کلید مخفی (برای HS256) یا کلید عمومی صادرکننده (برای RS256 و ES256) نیاز دارد و باید روی سرور شما با یک کتابخانه معتبر انجام شود.
آیا قرار دادن توکن من در اینجا امن است؟
توکن در مرورگر شما رمزگشایی میشود و به جایی ارسال نمیشود. با این حال، یک توکن معتبر تا زمان انقضا مانند رمز عبور عمل میکند؛ بنابراین ترجیحاً از توکنهای منقضیشده یا آزمایشی استفاده کنید و هرگز توکنهای production را در ابزارهایی که به آنها اعتماد ندارید قرار ندهید.
چرا هر کسی میتواند payload را بخواند؟
JWTهای امضاشده با base64url کدگذاری میشوند که رمزنگاری نیست. امضا از توکن در برابر تغییر محافظت میکند، نه در برابر خواندن. اگر محتوا باید محرمانه بماند، از JWT رمزنگاریشده (JWE) استفاده کنید یا دادهها را روی سرور نگه دارید.
“exp” به چه معناست و واحد آن چیست؟
exp زمان انقضا بهصورت NumericDate است: ثانیههای کامل (نه میلیثانیه) از 1970-01-01 00:00:00 UTC. توکن باید در آن لحظه یا پس از آن رد شود.
چرا پیام “not valid base64url” را دریافت میکنم؟
احتمالاً توکن هنگام کپی کردن ناقص شده یا تغییر کرده است؛ مثلاً نویسههای پایانی، علامت نقلقول دور آن حذف شده یا کدگذاری URL تغییر کرده است (%2E بهجای نقطه). توکن خام را دقیقاً همانطور که صادر شده جایگذاری کنید.
حریم خصوصی
توکن با جاوااسکریپت در مرورگر شما رمزگشایی میشود. به هیچ سروری ارسال نمیشود، ذخیره نمیشود و در تحلیلها گنجانده نمیشود. هیچ تأیید امضا یا جستوجوی کلیدی انجام نمیشود؛ بنابراین هیچ درخواست شبکهای صورت نمیگیرد.