شروحات الكمبيوتر والإنترنت والموبايل

تسجيل طرق المصادقة SAML وCookie في ASP.NET Core

تُعتبر عملية حقن الاعتماد (Dependency Injection) من الممارسات المهمة في تطوير البرمجيات، خصوصاً عند بناء تطبيقات الويب باستخدام ASP.NET Core. واحدة من الفوائد الرئيسية لهذه التقنية هي إمكانية إدارة الاعتماديات بشكل فعال مما يسهل تطوير وصيانة التطبيقات. في سياق هذا المقال، سوف نتناول كيفية تسجيل طريقتي مصادقة مختلفتين: مصادقة ملفات تعريف الارتباط (Cookie Authentication) ومصادقة SAML، وكيفية استخدام أي منهما بناءً على خاصية محددة لدى المستخدم.

تسجيل طرق المصادقة في ASP.NET Core

لبدء العمل على مشروع ASP.NET Core الخاص بك، عليك أولاً تسجيل طريقتي المصادقة في ملف Program.cs. حيث سنقوم بتحديد مصادقة ملفات تعريف الارتباط كإعداد افتراضي، ثم نقوم بإضافة مصادقة SAML. في مثالنا، سنضيف حقل جديد في جدول AspNetUser يسمى ExternalUser، هذا الحقل يمكن أن يحمل القيمة 0 أو 1. إذا كانت القيمة 1، سنستخدم مصادقة ملفات تعريف الارتباط، وإذا كانت 0 سنستخدم SAML.

إعداد ملفات المصادقة

يمكن القيام بذلك على النحو التالي:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        builder.Services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        })
        .AddCookie()
        .AddSaml2(options =>
        {
            // إعدادات مصادقة SAML هنا
        });
        var app = builder.Build();
        app.UseAuthentication();
        app.UseAuthorization();
        app.MapControllers();
        app.Run();
    }
}

في الكود أعلاه، قمنا بتحديد طريقة المصادقة الافتراضية التي هي ملفات تعريف الارتباط. كما أضفنا دعم لمصادقة SAML في حالة الحاجة إليها.

تحديد طريقة المصادقة بناءً على خاصية المستخدم

الآن، في صفحة تسجيل الدخول (Login.cs)، سوف نتحقق من خاصية ExternalUser للمستخدم. إذا كانت القيمة 0، سنقوم باستدعاء مصادقة SAML. أما إذا كانت القيمة 1، سنستخدم مصادقة ملفات تعريف الارتباط. إليك كيف يمكن تنفيذ ذلك:

public async Task<IActionResult> Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = await _userManager.FindByNameAsync(model.Username);
        if (user != null)
        {
            if (user.ExternalUser == 0)
            {
                // استخدام مصادقة SAML
                return Challenge(new AuthenticationProperties { RedirectUri = "/" }, "Saml2");
            }
            else
            {
                // استخدام مصادقة ملفات تعريف الارتباط
                var claims = new List<Claim>
                {
                    new Claim(ClaimTypes.Name, user.UserName)
                };
                var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity));
            }
        }
        ModelState.AddModelError(string.Empty, "Invalid login attempt.");
    }
    return View(model);
}

أهمية حقن الاعتماد في ASP.NET Core

إن استخدام تقنية حقن الاعتماد (Dependency Injection) في ASP.NET Core يمكن أن يساعد في تقليل الاعتماديات المباشرة بين المكونات، مما يسهل اختبار الكود وضمان جودة البرمجيات. من خلال إدارة طرق المصادقة بهذه الطريقة، يمكن لتطبيقك التكيف بسلاسة مع احتياجات المستخدمين المختلفة.

الحاجة لدعم طرق مصادقة متعددة، مثل SAML وملفات تعريف الارتباط، هي مثال جيد على كيفية استفادتك من حقن الاعتماد في التطبيق. من خلال قضاء بعض الوقت في إعداد المصادقة بشكل صحيح، يمكنك تحسين الأمان وتجربة المستخدم.

في الختام، إن العملية المتبعة في تسجيل كلتا طريقتي المصادقة في ASP.NET Core تعتبر بسيطة ولكنها فعالة. من خلال مراقبة حالتين مختلفتين للمستخدم، يمكنك اختيار الطريقة الأنسب للمصادقة بناءً على القيم المحددة في جدول المستخدمين.

بهذه الطريقة، يمكنك ضمان تقديم تجربة مصادقة سلسة وآمنة لمستخدمي تطبيقك.

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!