مبدل رایگان

توکن JWT رمزگشا

هدر JWT (JSON Web Token) و بارگذاری آن را فوراً در مرورگر خود رمزگشایی کنید. رایگان، خصوصی و سمت سرویس گیرنده - هیچ داده ای به هیچ سروری ارسال نمی شود.

درباره این ابزار

JSON Web Tokens (JWT) یک قالب فشرده و ایمن برای ارسال ادعاها بین دو طرف است که توسط RFC 7519 تعریف شده است. JWT سه بخش کدگذاری شده با پایه 64url است که با نقطه از هم جدا می شوند: سرصفحه (الگوریتم و نوع نشانه)، بار (ادعاها) و امضا (اثبات رمزنگاری اعتبار). هدر و محموله JSON هستند که برای امنیت URL با کد base64url کدگذاری شده اند. امضا از یکی از چندین الگوریتم (HS256، RS256، ES256، و دیگران) روی سربرگ کدگذاری شده و بار استفاده می کند.

رمزگشایی یک JWT - تقسیم آن به بخش ها و رمزگشایی پایه 64 هر کدام - به هیچ رازی نیاز ندارد. هر کسی که متن رمز را داشته باشد می‌تواند سرصفحه و بار آن را بخواند. با این حال، امضا فقط با کلید مخفی (HMAC) یا کلید عمومی (نامتقارن) قابل تأیید است. رمزگشایی برای بازرسی است. راستی آزمایی چیزی است که اصالت را ثابت می کند.

این رمزگشا رمز را تقسیم می کند، base64 هر بخش را رمزگشایی می کند، هدر و بار را به صورت JSON تجزیه می کند و نتیجه را نشان می دهد. تأیید امضا را انجام نمی دهد زیرا به کلید مخفی یا عمومی نیاز دارد که رمزگشا ندارد. خروجی رمزگشایی شده بازرسی فقط خواندنی است - برای اشکال زدایی نشانه ها مفید است اما جایگزینی برای تأیید صحیح در کد برنامه نیست.

چرا JWT ها را رمزگشایی کنیم؟

اشکال زدایی مسائل احراز هویت تقریباً همیشه شامل بازرسی توکن ها می شود. رمزی که در کد معتبر به نظر می رسد ممکن است ادعاهای اشتباه، الگوریتم غیرمنتظره، مهر زمانی منقضی شده یا عدم تطابق مخاطبان داشته باشد. رمزگشایی توکن نشان می دهد که صادرکننده دقیقاً چه چیزی را تولید کرده است.

بازرسی توکن ها در طول کار یکپارچه سازی نیز کمک می کند. هنگام اتصال به یک API شخص ثالث یا ارائه‌دهنده هویت، نام‌ها، قالب‌ها و ساختار ادعای واقعی به بهترین شکل با رمزگشایی نشانه‌های نمونه به جای تکیه بر اسنادی که ممکن است قدیمی باشند، درک می‌شوند.

نحوه استفاده

توکن را بچسبانید، محتویات تجزیه شده را دریافت کنید.

  1. JWT خود را بچسبانید: توکن کامل (header.payload.signature) را در قسمت ورودی رها کنید. رمزگشا توکن ها را با یا بدون پیشوند اختیاری حامل می پذیرد.
  2. هدر را بررسی کنید: هدر الگوریتم امضا (alg) و نوع نشانه (typ) را نشان می دهد. الگوریتم های رایج HS256، RS256 و ES256 هستند. مراقب alg باشید: هیچ، که نشانه یک نشانه بدون امضا است و به ندرت در تولید امن است.
  3. محموله را بازرسی کنید: محموله شامل ادعاهای زیر است: iss (صادرکننده)، فرعی (موضوع)، aud (مخاطب)، انقضا (انقضا)، iat (صدور در)، و هر گونه ادعای خاص برنامه. مهرهای زمانی استاندارد ثانیه های دوره یونیکس هستند.
  4. جداگانه تایید کنید: رمزگشا امضا را تأیید نمی کند. برای بررسی صحت، توکن را از طریق یک کتابخانه JWT با کلید مخفی یا عمومی مناسب در کد برنامه خود اجرا کنید.

موارد استفاده رایج

جزئیات فنی

فرمت JWT سه بخش است که با نقطه به هم وصل شده اند. هر بخش با base64url رمزگذاری شده است - نوع ایمن برای URL از base64 که از - و _ به جای + و / استفاده می‌کند که گاهی اوقات padding حذف می‌شود. رمزگشایی نیاز به لغو جایگزین‌های ایمن URL، padding بخش و base64-decoding دارد.

هدر و بارگذاری پس از رمزگشایی JSON هستند. بخش امضا باینری است (بایت های امضای خام) و قابل خواندن توسط انسان نیست. برای مفید بودن به کلید تأیید نیاز دارد.

ادعاهای متداول تعریف شده در RFC 7519: iss (صادرکننده)، sub (شناسه موضوع)، aud (مخاطب)، exp (انقضا به عنوان ثانیه های دوره یونیکس)، nbf (نه قبل از مهر زمانی)، iat (مهر زمانی صادر شده)، jti (شناسه نشانه منحصر به فرد). ادعاهای خاص برنامه می توانند با هر نامی ظاهر شوند.

بهترین شیوه ها

سوالات متداول

آیا چسباندن JWT من در اینجا بی خطر است؟
بله. رمزگشایی به طور کامل در مرورگر شما انجام می شود - رمز هرگز به هیچ سروری ارسال نمی شود. با این حال، JWT ها اعتبارنامه هستند - آنها را به صورت عمومی به اشتراک نگذارید (در اسکرین شات ها، پست های Stack Overflow و غیره) زیرا ممکن است به حساب های شما دسترسی داشته باشند.
آیا این ابزار امضای JWT را تأیید می کند؟
این ابزار محتویات توکن را رمزگشایی و نمایش می دهد. تأیید امضا به کلید مخفی (HMAC) یا کلید عمومی (RSA/ECDSA) نیاز دارد که باید در سرور شما باقی بماند. این ابزار الگوریتم مورد استفاده را نشان می دهد اما بدون کلید نمی تواند تأیید کند.
ادعاهای استاندارد JWT به چه معناست؟
iss = صادرکننده، زیر = موضوع (شناسه کاربر)، exp = زمان انقضا (مهر زمانی یونیکس)، iat = صادر شده در، nbf = قبل از آن، aud = مخاطب، jti = شناسه JWT. ادعاهای سفارشی می توانند حاوی هر گونه داده خاص برنامه باشند.
چرا کسی می تواند JWT را رمزگشایی کند؟
JWT ها رمزگذاری شده اند، نه رمزگذاری شده. محموله با کد Base64URL (رمزگذاری نشده) است، بنابراین هر کسی می تواند آن را بخواند. امضا از دستکاری جلوگیری می کند، نه خواندن. هرگز داده های حساس (رمزهای عبور، SSN) را در محموله های JWT ذخیره نکنید.
چرا برخی از توکن ها امضا ندارند؟
توکن های با alg: هیچکدام امضا ندارند. آنها JWT های معتبر بر اساس مشخصات هستند، اما هیچ تضمینی برای اصالت ندارند و نباید در تولید پذیرفته شوند.
آیا JWT ها رمزگذاری شده اند؟
محموله های استاندارد JWT امضا شده اند اما رمزگذاری نشده اند. JWE (JSON Web Encryption، RFC 7516) فرمت جداگانه ای برای توکن های رمزگذاری شده است. اکثر JWT ها در طبیعت JWS هستند (فقط دارای امضا).
آیا توکن من روی سرور آپلود می شود؟
نه. رمزگشایی در مرورگر شما انجام می شود. توکن دستگاه شما را ترک نمی کند.
مدت زمان JWT ها معمولا چقدر است؟
از چند صد تا چند هزار کاراکتر. طول به تعداد و اندازه ادعاها به اضافه طول امضا (که به الگوریتم بستگی دارد) بستگی دارد.