ASP.NET Core Identity یک سیستم عضویت منبع-باز است. این سیستم توانایی مدیریت حساب های کاربری و اجرای احراز هویت و مجوز را ارائه می دهد. استفاده از Identity به این دلیل توصیه می شود تا برنامه شما به اقدامات احتیاطی امنیتی و بهترین شیوه های مرتبط با آن پایبند بوده و از آنها پیروی کند. همچنین باعث صرفه جویی در زمان توسعه می شود، بنابراین می توانید روی منطق برنامه خود تمرکز کنید. برخی از ویژگی های برجسته ارائه شده توسط این فریم ورک شامل توانایی و امکان ایجاد حساب های کاربری و مدیریت رمزهای عبور است. به عنوان مثال، بازنشانی رمز عبور، عملکرد ورود و خروج، استفاده از ارائه دهندگان احراز هویت خارجی، مانند فیس بوک و گوگل، احراز هویت دو مرحله ای از امکانات این سیستم است و در نهایت، شما می توانید یک چارچوب را مطابق با نیاز های خود سفارشی سازی کنید.
درک نحوه عملکرد فرآیند احراز هویت در ASP.NET Core identity بسیار مهم است. این سیستم از یک مدل امنیتی مبتنی بر Claim (ادعا) استفاده می کند که در نسخه 4.5 دات نت معرفی شده است. Claim (ادعا) در اصل تنها یک ویژگی از یک هویت (Identity) است و شامل یک جفت عنوان و مقدار است. یک هویت می تواند یک یا چند Claim داشته باشد. به عنوان مثال، یک دانش آموز در برنامه نمونه ما می تواند چندین Claim داشته باشد که مشخص می کند که این شخص در اصل چه کسی هست. این موارد می تواند شامل نام، تاریخ تولد و آدرس ایمیل آنها باشد.
هر Claim مقداری دارد که مختص همان دانش آموز است. یک Identity(هویت) و فهرست Claim (ادعا) های آن توسط کلاس ClaimsIdentity نشان داده می شود. سلسله مراتب مربوط به Claim ها به همینجا ختم نمی شود، زیرا یک کاربر در ASP.NET Core می تواند چندین Identity(هویت) داشته باشد. اینجاست که کلاس ClaimsPrincipal وارد بازی می شود. یک ClaimsPrincipal از یک یا چند ClaimsIdentity تشکیل شده است که هر کدام از ClaimsIdentity ها به نوبه خود می تواند یک یا چند Claim داشته باشد. به طور مشروح، یک دانش آموز می تواند دو شکل شناسایی هویت داشته باشد. کارت دانشجویی و گواهینامه رانندگی. کارت دانشجویی دارای شماره دانشجویی و نام دانشگاه است. گواهینامه رانندگی دارای شماره گواهینامه رانندگی و تاریخ تولد آنها است. هر Identity ممکن است امکان دسترسی به منابع مختلف را فراهم کند.
ClaimsPrincipal همیشه تمام claim ها را از Identity های مرتبط به ارث می برد. در این حالت، کاربرهای دانشجوی ما هم با Claim کارت شناسایی دانشجویی (شماره دانشجویی) و هم با Claim گواهینامه رانندگی آنها شناسایی می شوند. پرکاربردترین روش برای احراز هویت شامل کوکی ها است. ASP.NET Core دارای یک سیستم میان افزار برای کوکی است که احراز هویت مبتنی بر کوکی را پشتیبانی و فعال می کند. هنگامی که کاربر وارد سیستم می شود (لاگین می کند)، ClaimsPrincipal و تمام Claim های به ارث رسیده آن Serialize شده و داخل کوکی ذخیره می شوند. کوکی رمزگذاری شده و به مرورگر بازگردانده می شود، مرور گر جاییست که کوکی در آن ذخیره می شود. در درخواستهای بعدی به سرور، کوکی از سمت مرورگر به سرور ارسال و توسط سرور تأیید میشود. کوکی پس از تأیید، برای ایجاد مجدد ClaimsPrincipal استفاده می شود. سپس اطلاعات به ویژگی کاربر(user) مربوط به HTTP context اختصاص داده می شود. اکنون کد برنامه شما به تمام اطلاعات کاربر و Claim های مرتبط با این اطلاعات دسترسی دارد.