راه اندازی امن .NET 6 Web API: ثبت نام کاربران، ورود و احراز هویت با استفاده از JWT
JWT یا JSON Web Token یک استاندارد باز (RFC 7519) است که روشی جمع و جور و ایمن برای انتقال اطلاعات بین دو طرف به شکل یک شی JSON فراهم می کند. این اطلاعات می تواند به صورت امن امضا شده یا رمزگذاری شده باشد. JWT به ویژه در زمینه احراز هویت و تبادل اطلاعات بین سرویس ها محبوبیت زیادی دارد.
ساختار JWT
یک JWT از سه بخش اصلی تشکیل شده است که با نقطه (.) از یکدیگر جدا می شوند:
Header (سرآیند)
Payload (محتوا)
Signature (امضا)
1. Header (سرآیند)
سرآیند معمولا شامل نوع توکن (JWT) و الگوریتم امضای استفاده شده (مانند HMAC SHA256 یا RSA) است. مثالی از یک سرآیند:
2. Payload (محتوا)
محتوا شامل ادعاها (claims) است. ادعاها اطلاعاتی هستند که درباره کاربر یا هر داده دیگری منتقل می شوند. سه نوع ادعا وجود دارد:
Registered Claims: ادعاهای استاندارد مانند iss (صادرکننده)، exp (تاریخ انقضا)، sub (موضوع) و aud (مخاطب).
Public Claims: ادعاهایی که به صورت عمومی تعریف شده اند و برای اشتراک گذاری مورد استفاده قرار می گیرند.
Private Claims: ادعاهایی که بین دو طرف خاص به توافق رسیده اند.
3. Signature (امضا)
برای ایجاد امضا، سرآیند، محتوا و یک کلید مخفی یا کلید عمومی/خصوصی استفاده می شود. امضا به منظور اطمینان از صحت و یکپارچگی اطلاعات JWT ایجاد می شود. برای الگوریتم HMAC SHA256، امضا به شکل زیر ایجاد میشود:
نحوه استفاده از JWT
احراز هویت: کاربر وارد سیستم می شود و یک JWT دریافت می کند. سپس این توکن در درخواست های بعدی به عنوان یک نشانه احراز هویت (معمولاً در هدر Authorization با قالب Bearer token) ارسال می شود.
تبادل اطلاعات: دو سرویس میتوانند اطلاعات را به صورت امن با یک JWT مبادله کنند.
مزایای استفاده از JWT
خودکفایی: تمام اطلاعات لازم برای احراز هویت و اعتبارسنجی در خود JWT موجود است.
امنیت: JWT می تواند امضا شده یا رمزگذاری شده باشد که امنیت انتقال داده ها را تضمین می کند.
کارایی: به دلیل ساختار فشرده و ساده، JWT عملکرد بالایی دارد و به راحتی قابل استفاده در سیستم های توزیع شده است.
نتیجه گیری
JWT یک ابزار قدرتمند برای احراز هویت و تبادل اطلاعات در برنامه های مدرن است. با درک ساختار و نحوه استفاده از آن، می توان امنیت و کارایی برنامه ها را بهبود بخشید.
سرفصل :
00:00:00 Intro
00:01:20 Create the Project
00:04:13 User DTO
00:05:46 User Model
00:06:59 API Controller with Register() Method
00:08:58 CreatePasswordHash() Method
00:13:00 User Registration Test
00:13:32 Login() Method
00:20:06 CreateToken() Method
00:28:30 First Test
00:29:14 Final Test
00:30:36 GitHub Repository
00:31:03 Outro
- C#
- JWT
- تاریخ شروع 1403/03/03
- تعداد دانشجو 7,325 نفر
- تعداد جلسات 0
- سطح دوره پیشرفته
- زبان انگلیسی
- زیرنویس ندارد
- لیست جلسات