آموزش Authentication و Authorization در ASP.NET Core
آموزش Authentication و Authorization در ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی Authentication و Authorization در ASP.NET Core است که با نام اصلی Authentication and Authorization in ASP.NET Core از شرکت Pluralsight منتشر شده است.
Authentication و Authorization در ASP.NET Core
فرآیند authentication شامل مشخص کردن هویت کاربر می باشد و authorization فرایند مشخص کردن این است که آیا کاربر دسترسی به یک منبع خاص را دارد یا نه. در فریم ورک ASP.NET Core فرایند authentication با استفاده از یک اینترفیس به نام IAuthenticationService انجام میشود. این اینترفیس توسط authentication middleware مورد استفاده قرار می گیرد. سرویس authentication از authentication handler های رجیستر شده برای کامل کردن عملیات مربوط به authentication استفاده می کند. برخی از عملیات مربوط به authentication شامل موارد زیر می باشند.
- فرایند authenticate کردن یک کاربر پاسخ دادن به این که یک کاربر غیره authenticate شده سعی میکند به یک منبع دسترسی پیدا کند
در واقع authentication handler های رجیستر شده و گزینه های پیکربندی مربوط به آنها را اصطلاحاً scheme نامیده می شوند. این scheme ها با رجیستر کردن authentication service ها در متد ConfigureServices از کلاس Startup تنظیم می گردند. برای رجیستر کردن یک scheme خاص می توانید از extension method های مربوطه پس از صدا زدن services.AddAuthentication استفاده کنید. دو مورد از این extension method ها شامل AddJwtBearer و AddCookie می باشند. این extension method ها از AuthenticationBuilder.AddScheme برای ثبت کردن scheme ها با تنظیمات مناسبی استفاده می کنند. برای مثال کدی که در قسمت زیر مشاهده می کنید authentication service ها و authentication handler ها را برای scheme های cookie و JWT bearer رجیستر می کند.

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => Configuration.Bind("CookieSettings", options));
پارامتر ورودی متد AddAuthentication که در این قسمت به JwtBearerDefaults.AuthenticationScheme تنظیم شده است در واقع مشخص کننده نام scheme پیش فرض است که در زمان تنظیم نشدن یک scheme باید مورد استفاده قرار بگیرد.
ضمناً اگر از چندین scheme استفاده شود، authorization policy ها و یا authorization attribute ها میتوانند مشخص کنند که از چه authentication scheme خاصی برای authenticate کردن کاربر استفاده میکنند. در مثال بالا cookie authentication scheme می تواند با مشخص کردن نامش به شکل CookieAuthenticationDefaults.AuthenticationScheme به صورت پیشفرض مورد استفاده قرار بگیرد. از طرفی می توان در زمان صدا زدن متد AddCookie از یک نام متفاوت استفاده کرد. ضمناً توصیه می کنیم که از بسته ی آموزش ویدئویی ساخت اولین وب اپلیکیشن با ASP.NET Core MVC نیز به منظور یادگیری ASP.NET Core استفاده کنید.
پیادهسازی سیستم ورود کاربران با ASP.NET Core Identity
ASP.NET Core Identity مجموعهای از قابلیتها برای مدیریت هویت کاربران در برنامههای ASP.NET Core فراهم میکند. با استفاده از آن میتوان امکاناتی مانند مدیریت حسابهای کاربری، ثبتنام و ورود کاربران را در ساختار برنامه پیادهسازی کرد. استفاده از یک راهکار استاندارد برای مدیریت هویت، به توسعهدهنده کمک میکند مسئولیتهای مربوط به حساب کاربری را از سایر بخشهای منطق برنامه جدا کند و ساختار منظمتری برای کنترل دسترسی کاربران ایجاد کند.
در طراحی سیستم ورود کاربران، تنها بررسی نام کاربری و رمز عبور اهمیت ندارد، بلکه مدیریت وضعیت هویت کاربر و ارتباط آن با درخواستهای بعدی نیز ضروری است. ASP.NET Core Identity در کنار سازوکارهای Authentication در ASP.NET Core به توسعهدهندگان کمک میکند این فرایندها را در چارچوب مشخصی پیادهسازی کنند. شناخت نحوه استفاده از این امکانات برای برنامهنویسانی که قصد دارند اپلیکیشنهای وب دارای حساب کاربری بسازند، یک مهارت کاربردی محسوب میشود.
استفاده از OpenID Connect برای احراز هویت در ASP.NET Core
OpenID Connect یک پروتکل مبتنی بر OAuth 2.0 است که برای احراز هویت کاربران و دریافت اطلاعات هویتی آنها به کار میرود. این پروتکل امکان ارتباط یک برنامه با یک Identity Provider را فراهم میکند تا فرایند ورود کاربر از طریق سرویس هویت مشخصی انجام شود. در برنامههای ASP.NET Core، استفاده از OpenID Connect میتواند بخشی از مسئولیت احراز هویت را به یک ارائهدهنده هویت خارجی واگذار کند و امکان یکپارچهسازی با سامانههای هویتی سازگار را فراهم آورد.
برای پیادهسازی این روش، آشنایی با نقش برنامه، Identity Provider و پیامهای تبادلشده در فرایند احراز هویت اهمیت دارد. پیکربندی صحیح تنظیمات اتصال و درک نحوه دریافت و پردازش اطلاعات هویتی به توسعهدهنده کمک میکند ارتباط میان برنامه و سرویس هویت را بهدرستی برقرار کند. OpenID Connect بهویژه در سناریوهایی مفید است که احراز هویت باید از طریق یک سامانه مستقل انجام شود و برنامه نیاز دارد هویت کاربران را بر اساس اطلاعات معتبر دریافتی بررسی کند.
مدیریت دسترسی کاربران و منابع در ASP.NET Core
پس از شناسایی هویت کاربر، برنامه باید مشخص کند که او اجازه انجام چه عملیاتی را دارد. این مسئولیت به فرایند Authorization مربوط میشود و میتواند بر اساس نقش کاربران، Policyها یا اطلاعات مرتبط با درخواست و هویت آنها انجام شود. در ASP.NET Core، سازوکارهای مجوزدهی به توسعهدهنده اجازه میدهند دسترسی به بخشهای مختلف برنامه را کنترل کند و از اجرای عملیات غیرمجاز جلوگیری کند. طراحی مناسب این قواعد، یکی از بخشهای مهم توسعه برنامههای وب امن است.
برای مدیریت دسترسیها، لازم است قواعد مجوزدهی متناسب با نیازهای واقعی برنامه تعریف شوند و در نقاط مناسب اعمال شوند. برای مثال، ممکن است مشاهده یک صفحه برای کاربران احراز هویتشده مجاز باشد، اما اجرای یک عملیات مدیریتی به دسترسی مشخصی نیاز داشته باشد. تفکیک Authentication از Authorization کمک میکند این دو مسئولیت مستقل و شفاف باقی بمانند. تسلط بر سازوکارهای Authorization در ASP.NET Core برای برنامهنویسانی که روی اپلیکیشنهای دارای کاربران و سطوح دسترسی متفاوت کار میکنند، اهمیت زیادی دارد.
سرفصل مطالب آموزش ویدئویی مباحث Authentication و Authorization در ASP.NET Core
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: بررسی Authentication و Authorization در ASP.NET Core
- مقدمه
- بررسی Authentication و Authorization
- راه اندازی کردن پروژه
- اضافه کردن Cookie Authentication
- انجام Log in و Log out کردن کاربران
- درک کردن و دسترسی پیدا کردن به ClaimsPrincipal
- استفاده کردن از Identity Provider های خارجی
- اضافه کردن Identity Provider های خارجی
- کار کردن با چندین Identity Provider
- جمعبندی
فصل سوم: پیاده سازی کردن Authentication با استفاده از ASP.NET Core Identity
- مقدمه
- ایجاد کردن یک پروژه جدید
- بررسی کردن دیتابیس
- پیکربندی کردن Identity در کلاس Startup
- بررسی کردن UI مربوط به Identity
- تغییر دادن مکانیزم Identity
- بررسی کردن دقیق تر کلاس های مربوط به Identity
- کار کردن با Claim ها
- فعال کردن Role ها
- استفاده کردن از Token ها و اضافه کردن قابلیت ارسال ایمیل
- بررسی Two-factor Authentication و پیاده سازی کردن آن
- استفاده کردن از Identity Provider های خارجی
- استفاده کردن از Identity در بیش از یک برنامه
- جمع بندی
فصل چهارم: اضافه کردن یک OpenIdConnect Identity Provider
- مقدمه
- انجام عملیات Authentication با استفاده از یک Identity Provider درک هر چه بهتر مفاهیم Identity Provider
- استفاده کردن از Client برای انجام عملیات Authentication
- انتخاب جریان OpenIdConnect Flow
- بررسی دقیق تر یک Identity Provider که IdentityServer را پیاده سازی می کند
- درک هرچه بهتر Cookie ها و مفهوم Single Sign-on
- پیکربندی کردن یک Identity Provider
- محافظت کردن و فراخوان زدن به یک API با استفاده از یک Access Token
- استفاده کردن از جریان Client Credentials Flow
- محافظت کردن از Token ها
- استفاده از Refresh Token و Reference Token ها
- استفاده کردن از Cloud Identity Provider ها
- جمع بندی
فصل پنجم: اعمال کردن Authorization
- مقدمه
- انجام Authorization با استفاده از Policy ها
- بررسی کردن Policy ها در Page ها و View ها
- استفاده کردن از Requirement و Handler ها
- پیاده سازی کردن Requirement و Handler ها
- پیاده سازی کردن Policy های مبتنی بر Resource
- انجام عملیات Authorization در API ها
- بررسی دقیق تر مکانیزم انجام Authorization با استفاده از دیتابیس های دیگر
- جمع بندی

