رمزگشای JWT
رمزگشایی یک توکن وب JSON (JWT) برای مشاهده سربرگ، محتوا و امضای آن. مفید برای اشکالزدایی و بازرسی توکنهای JWT مورد استفاده در احراز هویت و مجوزدهی. محتوای JWT شما هیچجا ذخیره نمیشود.
محتوا (ادعاها):
سربرگ (الگوریتم امضا و نوع توکن):
امضا:
امضا به صورت دادههای رمزگذاریشده با Base64URL نمایش داده میشود. تأیید امضا توسط این ابزار انجام نمیشود.
اطلاعات بیشتر درباره توکنهای وب JSON
فرمت JWT
توکن وب JSON (JWT) یک روش فشرده و امن برای URL جهت نمایش ادعاهایی است که بین دو طرف منتقل میشوند. این توکن از سه بخش رمزگذاریشده با Base64URL تشکیل شده که با نقطه جدا میشوند: header.payload.signature. سربرگ معمولاً شامل نوع توکن (JWT) و الگوریتم امضا است. محتوا شامل ادعاها - بیانیههایی درباره یک موجودیت (معمولاً کاربر) و فرادادههای اضافی است. امضا برای تأیید عدم تغییر پیام در طول مسیر استفاده میشود.
JOSE (امضا و رمزگذاری اشیاء JSON)
JWT بخشی از چارچوب بزرگتر JOSE (امضا و رمزگذاری اشیاء JSON) است که روشی استاندارد برای ایمنسازی دادههای مبتنی بر JSON ارائه میدهد. JOSE شامل چندین مشخصات مرتبط است: JWS (امضای وب JSON) برای توکنهای امضاشده، JWE (رمزگذاری وب JSON) برای توکنهای رمزگذاریشده، JWK (کلید وب JSON) برای نمایش کلیدهای رمزنگاری، و JWA (الگوریتمهای وب JSON) برای مشخص کردن الگوریتمهای رمزنگاری.
امضای وب JSON (JWS)
اکثر JWTهایی که با آنها مواجه میشوید توکنهای JWS هستند - امضا شدهاند اما رمزگذاری نشدهاند. این بدان معناست که هر کسی میتواند محتوا را با رمزگشایی Base64URL بخواند، اما بدون باطل کردن امضا نمیتواند آن را تغییر دهد. JWS یکپارچگی و اصالت را فراهم میکند: میتوانید تأیید کنید که توکن توسط یک طرف معتبر صادر شده و دستکاری نشده است.
الگوریتمهای امضا
JWS از الگوریتمهای رمزنگاری مختلفی برای امضای توکنها پشتیبانی میکند. اینها به دو دسته تقسیم میشوند: الگوریتمهای متقارن (کلید یکسان برای امضا و تأیید) و الگوریتمهای نامتقارن (کلید خصوصی برای امضا، کلید عمومی برای تأیید).
الگوریتمهای HMAC (متقارن)
HS256، HS384 و HS512 از HMAC (کد احراز هویت پیام مبتنی بر هش) با SHA-256، SHA-384 یا SHA-512 استفاده میکنند. اینها الگوریتمهای متقارن هستند - همان کلید مخفی هم برای امضا و هم برای تأیید توکن استفاده میشود. الگوریتمهای HMAC سریع و ساده هستند اما نیاز به توزیع امن کلید دارند زیرا هر دو طرف به همان رمز نیاز دارند.
الگوریتمهای RSA (نامتقارن)
RS256، RS384 و RS512 از RSASSA-PKCS1-v1_5 با SHA-256، SHA-384 یا SHA-512 استفاده میکنند. PS256، PS384 و PS512 از RSASSA-PSS (طرح امضای احتمالاتی) استفاده میکنند. الگوریتمهای RSA از کلید خصوصی برای امضا و کلید عمومی برای تأیید استفاده میکنند. این امکان اشتراکگذاری عمومی کلید تأیید را بدون به خطر انداختن امنیت فراهم میکند - ایدهآل برای سیستمهای توزیعشده که چندین سرویس نیاز به تأیید توکنها دارند.
الگوریتمهای منحنی بیضوی (نامتقارن)
ES256، ES384 و ES512 از ECDSA (الگوریتم امضای دیجیتال منحنی بیضوی) با منحنیهای P-256، P-384 یا P-521 استفاده میکنند. الگوریتمهای EC همان امنیت RSA را اما با اندازه کلیدهای کوچکتر ارائه میدهند که منجر به امضاهای کوچکتر و عملیات سریعتر میشود. ES256 به دلیل کاراییاش برای برنامههای مدرن محبوبیت فزایندهای دارد.
رمزگذاری وب JSON (JWE)
در حالی که JWS توکنهای امضاشده ارائه میدهد، JWE توکنهای رمزگذاریشدهای ارائه میدهد که محتوای آنها محرمانه است. توکنهای JWE به جای سه بخش، پنج بخش دارند: سربرگ، کلید رمزگذاریشده، بردار مقداردهی اولیه، متن رمز و برچسب احراز هویت. JWE از الگوریتمهای رمزگذاری مختلف از جمله AES-GCM و AES-CBC با HMAC پشتیبانی میکند. توجه داشته باشید که این رمزگشا فقط توکنهای JWS را مدیریت میکند؛ توکنهای JWE نیاز به رمزگشایی با کلید مناسب دارند.
مشخصات RFC
استانداردهای JWT و JOSE در چندین RFC سازمان IETF تعریف شدهاند: