امنیت در اپلیکیشن های ASP.NET Core 3 با OAuth2 و OpenID Connect

کتابخانه ASP.NET Core Identity چیست؟کتابخانه ASP.NET Core Identity یک واسط کاربری و یا یک user interface به منظور پیاده سازی عملیات login کردن در اپلیکشین های ASP.NET Core اضافه می کند. برای ایمیل کردن web API ها و یا SPA ها می توان از یکی از موارد زیر استفاده کرد.قابلیت Azure Active Directoryقابلیت Azure Active Directory B2C (Azure AD B2C)قابلیت IdentityServer4در واقع IdentityServer4 یک فریم ورک OpenID Connect و OAuth2 برای ASP.NET Core است و IdentityServer4 مباحث امنیتی زیر را پیاده سازی می کند.قابلیت Authentication as a Service (AaaS)قابلیت Single sign-on/off (SSO) در چندین اپلیکیشن تایپ مختلفقابلیت Access control برای API هاقابلیت Federation Gatewayیکی از موضوعات بسیار جذاب IdentityServer انعطاف پذیری آن در توسعه web application ها و database هایی است که به منظور ذخیره کردن اطلاعات کاربران و پسورد های آنها استفاده می شود. اگر در حال توسعه یک web application جدید با ASP.NET Core هستید، می توانید از ASP.NET Core Identity به عنوان‌ یک گزینه استفاده کنید.تکنولوژی OAuth2 چیست؟به بیان ساده OAuth2 یک authorization framework است که اجازه می دهد اپلیکیشن ها بتوانند دسترسی محدود به حساب های کاربری با استفاده از HTTP service را به دست بیاورد. این حساب های کاربری بر روی شبکه هایی از قبیل Facebook و GitHub و DigitalOcian می باشند. در واقع OAuth2 کمک می کند تا عملیات user authentication به سرویسی که اطلاعات مربوط به حساب کاربری را میزبانی کرده است واگذار بگرداند و نهایتا اپلیکیشن ما می تواند به اطلاعات حساب کاربری دسترسی پیدا کند. OAuth2 برای web application ها و desktop application ها و mobile device ها نیز دارای authorization flow های مختلفی است.بررسی Role ها در OAuth2فریم ورکOAuth2 ، Role های مختلفی را برای کار کردن تعریف می کند که در ادامه به آنها می پردازیم.معرفی Resource Owner: این Entity میتواند دسترسی را به resource های محافظت شده فراهم کند. اغلب این Entity همان کاربر نهایی خواهد بود.معرفی Resource Server: سروری که میزبانی resource های محافظت شده را در اختیار دارد Resource Server می باشد. این اغلب API است که شما امکان دسترسی پیدا کردن به آن را دارید.معرفی Client: اپلیکیشنی که درخواست دسترسی به یک resource محافظت شده را به نمایندگی از Resource Owner صادر می کند Client می باشد.معرفی Authorization Server: سروری که Resource Owner را authenticate می کند و access token ها را پس از انجام authorization مناسب صادر می نماید. در این مورد OAuth0 می تواند Authorization Server باشد.تکنولوژی OpenID Connect چیست؟تکنولوژی OpenID Connect به بیان ساده به آن OIDC نیز می گویند یک لایه identity است که سوار بر فریم ورک OAuth2.0 ایجاد می شود‌. این لایه identity اجازه می دهد تا third-party application ها بتوانند identity کاربر نهایی را بررسی کرده و اطلاعات معمول مربوط به user profile را بدست بیاورد. OIDC از JSON web token ها به بیان ساده به آنها JWT نیز می گویند استفاده می کند. برای بدست آوردن JSON web token ها می توانید از flow هایی که بر اساس استاندارد های OAuth2 تنظیم شده اند استفاده کنید. در حالی که OAuth2 بر روی resource acess و resourse sharing کار می کند OIDC در رابطه با user authentication پیاده سازی شده است. هدف از OIDC فراهم کردن قابلیتی برای یک login در چندین وبسایت است.هربار که ما نیاز به login کردن در یک وبسایت با استفاده از OICD دارید در واقع در حال redirect شدن به وبسایت OpenID خود هستید که در آن login خواهید کرد و پس از آن به وبسایت اولیه باز گردانده خواهید شد. برای مثال اگر برای sign in کردن به OAuth0 از حساب کاربری گوگل خود استفاده می کنید در واقع دارید از OIDC استفاده می نمایید. پس از اینکه با موفقیت خود را در گوگل authenticate کردید و به OAuth2 اصطلاحا authorize دسترسی به اطلاعات خود را دادید گوگل این اطلاعات را به OAuth0 ارسال کرده و authentication انجام می شود. این اطلاعات در قالب یک JWT برگردانده خواهد شد. اما در ابتدا یک access token را دریافت می کنید و در صورت در خواست کردن می توانید یک ID token را نیز دریافت کنید.منبع: وبسایت پرووید