هیچ دوره ای در سبد آموزش شما وجود ندارد
آموزش identity در mvc – سفارشی سازی identity
صفحه نخستامروز در سلسله مقالات آموزش ASP دانشجویار به بررسی آموزش identity در mvc جزییات و کاربرد آن پرداخته ایم.
یکی از مواردی که در آموزش authentication در MVC درباره آن صحبت میشود، identity است. شاید شما نیز هنگام آموزش authentication در MVC نامهایی مثل identity و claim را شنیده باشید. این دو، از مهمترین موارد برای یادگیری authentication هستند و اگر شما نیز میخواهید authentication را یاد بگیرید، باید این دو را نیز یاد بگیرید. در این نوشتار قصد داریم درباره idendity صحبت کنیم و ببینیم نحوه اجرای identity در MVC به چه شکل است و چگونه میتوان آن را اجرا کرد.

Claim چیست؟
Claim در حقیقت یک روش امنیتی برای دریافت اطلاعات کاربران است. این روش یکی از روشهای بسیار مهم بوده و امروزه برای authentication از آن استفاده میشود. در حقیقت احراز هویت بر پایه claim به ما کمک میکند تا اطلاعات مورد نیاز خود درباره کاربر را از او گرفته و امنیت سیستم ما ارتقا یابد.
مراحل زیر توالی آنچه در یک مدل امنیتی مبتنی بر Claim اتفاق میافتد را نشان میدهد:
گام اول: کاربر اقدام به فرستادن یک درخواست میکند. برنامه (RP) یک رمز میخواهد.
گام دوم: کاربر اعتبارنامه را به مرجع صادر کننده که برنامه RP به آن اعتماد دارد ارائه میدهد.
گام سوم: مرجع صادر کننده پس از احراز هویت اعتبار کاربر، یک رمز امضا شده با claimها صادر میکند.
گام چهارم: کاربر رمز را به برنامه RP ارائه میدهد. این نرم افزار امضای رمز را تأیید می کند، claimها را استخراج میکند و بر اساس claimها، درخواست را می پذیرد یا رد میکند.

Identity چیست؟
Identity در حقیقت به جای سیستم قدیمی ASP.NET Membership و Simple Membership معرفی شده است و قابلیتهای زیادی به مانند profile support دارد که این قابلیتهای جدید میتواند کمک زیادی به برنامه نویسان برای نوشتن اپلیکیشنهای تحت وب آنها کند. همچنین Identity قابلیت کار با سیستم owin را دارد و شامل تمپلیتهای انتقال پیدا کرده از ویژوال استودیو 2013 است.
OWIN چیست؟
ASP.NET MVC و ASP.NET Core از یک رابط باز وب ( Open Web Interface for .NET (OWIN) ) پشتیبانی میکنند. این رابط در حقیقت در بین وب سرور و اپلیکیشن تحت وب قرار میگیرد و هدف و ماموریت اصلی آن جدا سازی بین اپلیکیشنها و سرور است. OWIN به شکل یک میانافزار نقش ایفا میکند.


چگونه در ASP.NET MVC یک identity ایجاد کنیم؟
در این قسمت شروع به ایجاد یک identity کرده و باهم نحوه انجام آن را بررسی میکنیم.
گام اول: ایجاد یک پروژه جدید
در قدم اول نیاز است یک پروژه جدید در visual studio ایجاد کنیم. برای این کار لازم است ابتدا نرم افزار را باز کرده و پس از آن یک پروژه جدید C# ایجاد کرده و از منوی ایجادشده نیز ساخت یک Web application ASP.NET را انتخاب میکنیم.

گام دوم: انتخاب یک تمپلیت
در گام دوم نیاز است که یک MVC تمپلیت را از میان تمپلیتهای موجود انتخاب کنیم و گزینه change authentication را بزنیم.

گام سوم: انتخای یکی از مدلهای authentication
در قدم سوم لازم است تا از میان مدلهای authentication یکی از آنها را انتخاب کنیم که ما در اینجا از individual user account استفاده میکنیم و بر روی کلید ok کلیک میکنیم.

گام چهارم
پس از انتخاب نوع احراز هویت، در Controller به پنجره قبلی برگردید و دوباره روی OK کلیک کنید. چند دقیقه طول میکشد تا برنامه باز شود و پس از آن، دکمه تأیید را کلیک کنید.

گام پنجم
بعد از باز شدن پروژه بر روی startup.cs در درون قسمت solution explore کلیک میکنیم و پس از آن میتوانیم صفحه آغازینی را ببینیم که OWIN Assembly در آن شروع شده است.

بر روی ConfigureAuth(app) کلیک راست میکنیم و پس از آن به Definition page رفته و در آنجا میتوانیم auto-generated کدها را ببینیم. این کدهای از پیش آماده به ما کمک میکند میزان کد نویسی کمتری را داشته باشیم.

گام ششم
حال میتوانید اپلیکیشن خود را کامپایل کنید و پس از کامپایل و اجرای آن، صفحهای مطابق صفحه زیر میبینید و میتوانید در قسمت بالا و در سمت راست صفحه گزینههای login و register را ببینیم. بر روی لاگین کلیک کرده و میبینید که میتوانید اطلاعات خود را در آن وارد کنید.

گام هفتم
حال اگر شما یک user جدید هستید میتوانید، گزینه رجیستر را انتخاب کرده و یوزرنیم و پسورد خود را در آن وارد کنید.

اما اگر user جدید نیستید و قبلاً مراحل نام نویسی را انجام دادهاید، میتوانید با دادن اطلاعات خود در قسمت login وارد برنامه شوید.
وارد برنامه شوید. اکنون میتوانید اطلاعات خود را در قسمت بالا سمت راست مشاهده کنید.

گام هشتم
ما میتوانیم از Identity در هر صفحهای از برنامه استفاده کنیم. برای این کار قصد داریم آن را در یکی از صفحات جدید برنامه فعال کنیم. برای این کار میتوانیم از میانافزار OWIN استفاده کنیم. ما میتوانیم با ساخت یک کنترلر در قسمت View page و فعال کردن identity با استفاده از attribute های owin این کار را به سادگی انجام دهیم. بعد از اضافه شدن کنترلر کد زیر را به Test کنترلر اضافه میکنیم.
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Web;
5. using System.Web.Mvc;
6.
7. namespace NewIdentity.Controllers
8. {
9. public class TestController : Controller
10. {
11. // GET: Test
12. public ActionResult Identity()
13. {
14. return Content("We are using Identity");
15. }
16. public ActionResult NonIdentiy()
17. {
18. return Content("We are not using Identity");
19. }
20. }
21. }
به دلیل اینکه هیچ attribute مشخصی را برای فعال کردن identity استفاده نکردیم، برنامه در حال اجرا، از ما هیچ احراز هویتی را نمیخواهد. برای این منظور باید با استفاده از attribute ها identity را فعال کنیم. اگر این کار را انجام دهیم برنامه، در هر دفعه اطلاعات ورودی را از ما طلب میکند. کد ما بعد از فعال کردن identity به شکل زیر میشود.
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Web;
5. using System.Web.Mvc;
6.
7. namespace NewIdentity.Controllers
8. {
9. public class TestController : Controller
10. {
11. // GET: Test
12. /// <summary>
13. /// Identity In Action Result Level
14. /// </summary>
15. /// <returns></returns>
16. [Authorize]
17. public ActionResult Identity()
18. {
19. return Content("We are using Identity");
20. }
21. public ActionResult NonIdentiy()
22. {
23. return Content("We are not using Identity");
24. }
25. }
26. }
در کد بالا ما از athurize استفاده کردیم. با استفاده از آن میتوان identity را فعال کرد. همچنین این کد، به ما نشان میدهد که چگونه میتوانیم در controller level از identity استفاده کرده و آن را با استفاده از attribute ها فعال کنیم.
کد ما در controller level به شکل زیر است.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace NewIdentity.Controllers
{
/// <summary>
/// Identity in Contoller Level
/// </summary>
/// <returns></returns>
[Authorize]
public class TestController : Controller
{
// GET: Test
public ActionResult Identity()
{
return Content("We are using Identity");
}
public ActionResult NonIdentiy()
{
return Content("We are not using Identity");
}
}
اگر شما کد را اجرا کنید، مستقیماً به صفحه لاگین که در درون نرم افزار است منتقل خواهید شد. دلیل آن فعال بودن identity است. بعد از وارد کردن اطلاعات خود به برنامه منتقل خواهید شد. آدرس نهایی آن به شکل زیر است.

اگر ما نیاز داریم تا identity برای کار به خصوصی اجرا نشود میتوانیم از کد زیر و AllowAnonymous attribute استفاده کنیم.
1. namespace NewIdentity.Controllers
2. {
3.
4. [Authorize]
5. public class TestController : Controller
6. {
7. // GET: Test
8. public ActionResult Identity()
9. {
10. return Content("We are using Identity");
11. }
12. /// <summary>
13. /// Disable identity to particuler action result
14. /// </summary>
15. /// <returns></returns>
16. [AllowAnonymous]
17. public ActionResult NonIdentiy()
18. {
19. return Content("We are not using Identity");
20. }
21. }
22. }
در این آموزش دیدیم که چگونه میتوانیم از identity استفاده کنیم و روش کار آن در authentication چیست. با استفاده از این قابلیت به سادگی میتوانیم بسیاری از مشکلات درباره authentication و ورود به سایت را حل کنیم و به سادگی از این قابلیت بسیار قدرتمند MVC استفاده کنیم.
منابع:
https://docs.microsoft.com/en-us/aspnet/identity/overview/getting-started/
https://www.c-sharpcorner.com/article/create-identity-in-simple-ways-using-asp-net-mvc-5/