برنامه نویسی

JWT – مفهومی برای مصاحبه

Summarize this content to 400 words in Persian Lang
من در 5 سال گذشته در اکثر پروژه‌ها با JWT کار کرده‌ام، من خودم یک نقطه پایانی احراز هویت را با استفاده از JWT برای یک پروژه شخصی تنظیم کرده بودم و با این حال، نمی‌توانم به نحوه عملکرد JWT در مصاحبه‌ها پاسخ دهم.

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

باید ساده باشد، پس بیایید از چت بی فایده ی چت صرف نظر کنیم و به آنچه واقعاً مهم است برویم.

JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIKfWF4MjM5SKF4MjMjM5SKF4MjM5SKF4F6MjM5SKF4F6M5M5KXWF2. k6yJV_adQssw5c

یک توکن JWT به این شکل است، هر نقطه نشان دهنده یک مقسوم علیه در ساختار است.

1. ساختار

header.payload.signature

سربرگeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

هدر معمولا الگوریتم و نوع توکن را ذخیره می کند.

الگوریتم مخفف نوع الگوریتمی است که برای رمزگذاری رمز استفاده می شود، معمولاً ما از HS256 استفاده می کنیم.

بارeyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.

محموله معمولاً حاوی چیزی شبیه به:

{“iat”: timestamp، “iss”: string، “exp”: timestamp، “userId”: string، “userRole”: boolean}

شناسایی کاربر (به عنوان مثال: userId، userRole)انقضاIssuedAt (iat): نشان دهنده تاریخ ایجاد توکن است.صادرکننده: (iss): نام سروری که توکن را صادر کرده است.Expiry: (exp): زمان انقضای رمز.

امضاSflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

امضا با ایجاد یک هش با استفاده از الگوریتم HMACSHA256 با ورودی داده شده ترکیب می شود:

(HMACSHA256)base64 (هدر)، base64 (بارگذاری)، base64 (کلید)) = امضاء.

به همین سادگی، ما یک خروجی داریم که رمز JWT رمزگذاری شده است، که فقط توسط سرورهایی که کلید در آنها قابل تطبیق است اعتبارسنجی می شود.

من در 5 سال گذشته در اکثر پروژه‌ها با JWT کار کرده‌ام، من خودم یک نقطه پایانی احراز هویت را با استفاده از JWT برای یک پروژه شخصی تنظیم کرده بودم و با این حال، نمی‌توانم به نحوه عملکرد JWT در مصاحبه‌ها پاسخ دهم.

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

باید ساده باشد، پس بیایید از چت بی فایده ی چت صرف نظر کنیم و به آنچه واقعاً مهم است برویم.

JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIKfWF4MjM5SKF4MjMjM5SKF4MjM5SKF4F6MjM5SKF4F6M5M5KXWF2. k6yJV_adQssw5c

یک توکن JWT به این شکل است، هر نقطه نشان دهنده یک مقسوم علیه در ساختار است.

توضیحات تصویر

1. ساختار

header.payload.signature

سربرگ
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

هدر معمولا الگوریتم و نوع توکن را ذخیره می کند.

الگوریتم مخفف نوع الگوریتمی است که برای رمزگذاری رمز استفاده می شود، معمولاً ما از HS256 استفاده می کنیم.

بار
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.

محموله معمولاً حاوی چیزی شبیه به:

{“iat”: timestamp، “iss”: string، “exp”: timestamp، “userId”: string، “userRole”: boolean}

شناسایی کاربر (به عنوان مثال: userId، userRole)
انقضا
IssuedAt (iat): نشان دهنده تاریخ ایجاد توکن است.
صادرکننده: (iss): نام سروری که توکن را صادر کرده است.
Expiry: (exp): زمان انقضای رمز.

امضا
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

امضا با ایجاد یک هش با استفاده از الگوریتم HMACSHA256 با ورودی داده شده ترکیب می شود:

(HMACSHA256)
base64 (هدر)،
base64 (بارگذاری)،
base64 (کلید)
) = امضاء.

به همین سادگی، ما یک خروجی داریم که رمز JWT رمزگذاری شده است، که فقط توسط سرورهایی که کلید در آنها قابل تطبیق است اعتبارسنجی می شود.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا