توسعه‌دهنده 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

بررسی انقضای JWT

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

توکن JWT
کلید محرمانه یا عمومی
کلید در مرورگر خود شما استفاده می‌شود و هرگز جایی فرستاده نمی‌شود.
رمزگشایی‌شده
هدر

          
        
پی‌لود

        
امضا

برای آزمودن یک سرویس، توکن خودتان را امضا کنید. همه‌چیز در همین صفحه محاسبه می‌شود.

کلید امضا

کلید و توکن ساخته‌شده در مرورگر شما می‌مانند؛ هیچ‌کدام جایی فرستاده نمی‌شوند و در پیوند هم‌رسانی هم نمی‌آیند.

ببینید یک JSON Web Token کی منقضی می‌شود

یک درخواست ردشده به‌ندرت زیاد معما می‌ماند: نخستین چیزی که ارزش نگاه کردن دارد این است که توکن هنگام رسیدن هنوز زنده بوده یا نه. مشکل اینجاست که پاسخ به‌شکل چیزی مثل 1790208000 ذخیره شده و هیچ‌کس آن را در یک نگاه نمی‌خواند. توکن را بچسبانید تا خط بالای هدرِ رمزگشایی‌شده همان را با کلمه بگوید — دو روز پیش منقضی شده، پنجاه‌وهشت دقیقه دیگر منقضی می‌شود، هنوز معتبر نیست — و جدول کلیم‌ها تاریخ کامل را به وقت خودتان بدهد.

همه چیز در همین صفحه رمزگشایی می‌شود. اینجا این نکته مهم‌تر است، چون توکن یک گواهی زنده است: هر کس یک توکن معتبر داشته باشد معمولاً می‌تواند تا همان لحظه‌ای که این صفحه از آن حرف می‌زند به‌جای صاحبش عمل کند. هیچ‌چیزی که می‌چسبانید بارگذاری، ثبت یا نگهداری نمی‌شود.

سه کلیمی که زمان را حمل می‌کنند

کلیممعنامقدار نادرست چه شکلی است
expتوکن از این لحظه به بعد پذیرفته نمی‌شودخطای ۴۰۱ که هر بار پس از ورود، در فاصله‌ای ثابت پیدا می‌شود
nbfپیش از این لحظه اجازه استفاده نداردتوکن تازه‌ساخته‌ای که در ثانیه‌های نخست رد می‌شود
iatزمان صدورقاعده‌های بیشینه عمر از آن استفاده می‌کنند؛ توکن قدیمی اما منقضی‌نشده هم رد می‌شود

هر سه ثانیه از مبدأ یونیکس‌اند، نه میلی‌ثانیه — یک JWT که با Date.now() جاوااسکریپت دستی نوشته شده باشد سر از سال ۵۸٬۰۰۰ درمی‌آورد و هیچ‌جا پذیرفته نمی‌شود. اگر بخواهید یکی از این عددها را جداگانه تبدیل کنید، مبدل مهر زمانی همان حساب را در هر دو جهت انجام می‌دهد.

منقضی شده یا فقط ناهماهنگ؟

دو ماشین به‌ندرت سر ثانیه با هم می‌خوانند، پس هر بررسی‌کننده عاقلی کمی رواداری می‌دهد؛ سی تا شصت ثانیه معمول است. همین رواداری است که باعث می‌شود توکنی اینجا چند ثانیه منقضی به نظر برسد و باز هم پذیرفته شود، و توکنی که سرورش ساعت جلو دارد در لحظه‌های نخست به‌عنوان هنوز معتبر نیست رد شود. اگر توکنی خیلی بیرون از این پنجره رد شود، ایراد از ساعت نیست.

نیمه دیگر پاسخ، امضاست. توکن منقضی می‌تواند امضایی کاملاً درست داشته باشد و توکن جعلی می‌تواند exp بسیار دوری اعلام کند؛ این دو پرسش مستقل‌اند. این صفحه هر دو را می‌گوید: امضا را با کلید زیر توکن بررسی کنید، و نتیجه منقضی همچنان کنار نتیجه معتبر اعلام می‌شود.

یک توکن چقدر باید عمر کند

کوتاه، چون توکن را نمی‌شود پس گرفت. همین‌که امضا شد، هر کس آن را داشته باشد تا گذشتن exp همان کاربر است؛ پس توکن دسترسی‌ای که پانزده دقیقه عمر می‌کند زیان یک نشت را جوری محدود می‌کند که توکن سی‌روزه هرگز نمی‌تواند. ترتیب معمول، توکن دسترسی کوتاه است در کنار توکن تازه‌سازی بلند که سمت سرور نگه داشته می‌شود و می‌توان باطلش کرد — همان معامله‌ای که مقایسه با کوکی نشست از آن می‌گوید.

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

آموزش‌های مرتبط