Authentication এবং Authorization এর জন্য কুকিজ ব্যবহার

Web Development - এএসপি ডট (ASP.Net) - সেশন এবং কুকিজ ব্যবস্থাপনা |

ASP.Net অ্যাপ্লিকেশনে Authentication এবং Authorization হল নিরাপত্তার দুটি মূল অংশ যা ব্যবহারকারীদের সনাক্তকরণ এবং তাদের অ্যাক্সেস কন্ট্রোল নিশ্চিত করে। কুকিজ (Cookies) ব্যবহার করে এই প্রক্রিয়াগুলিকে আরো সহজ এবং কার্যকর করা যায়। কুকিজ ব্যবহার করে, একটি অ্যাপ্লিকেশন ব্যবহারকারীর সেশন এবং অথেন্টিকেশন তথ্য সংরক্ষণ করতে পারে এবং পুনরায় ব্যবহার করার জন্য সেগুলিকে পাঠাতে পারে।


Authentication এবং Authorization কি?

  • Authentication (সনাক্তকরণ): এটি প্রক্রিয়া যা নিশ্চিত করে যে ব্যবহারকারী আসলেই কে। এটি সাধারণত ইউজারনেম এবং পাসওয়ার্ডের মাধ্যমে করা হয়।
  • Authorization (অনুমোদন): এটি প্রক্রিয়া যা নির্ধারণ করে যে, সনাক্তকৃত ব্যবহারকারী কোন রিসোর্স বা অ্যাকশনে অ্যাক্সেস পাবে। Authorization সাধারণত নির্দিষ্ট রোল বা পারমিশনের উপর ভিত্তি করে কাজ করে।

ASP.Net Core অ্যাপ্লিকেশনগুলিতে, কুকিজ সাধারণত Authentication এবং Authorization এর জন্য ব্যবহৃত হয়।


কুকিজে Authentication এবং Authorization তথ্য সংরক্ষণ

ASP.Net Core এ, কুকিজ ব্যবহারের মাধ্যমে ইউজারের সেশন পরিচালনা এবং নিরাপত্তা নিশ্চিত করা যায়। এটি সাধারণত AuthenticationMiddleware এর মাধ্যমে কনফিগার করা হয়। কুকিজে JWT (JSON Web Token) বা claims সংরক্ষণ করা যেতে পারে, যাতে নিরাপদে ব্যবহারকারীর তথ্যটি পরিচালনা করা যায়।


কুকিজের মাধ্যমে Authentication কনফিগার করা

ASP.Net Core অ্যাপ্লিকেশনে কুকিজ ব্যবহার করে Authentication কনফিগার করার জন্য আপনাকে Startup.cs ফাইলে কিছু কনফিগারেশন করতে হবে। সাধারণত, কুকিজ ভিত্তিক অথেন্টিকেশন ব্যবহার করার জন্য ASP.Net Core এ Cookie Authentication মডিউল ব্যবহার করা হয়।

১. ConfigureServices মেথডে Authentication কনফিগার করা

প্রথমে Startup.cs ফাইলের ConfigureServices মেথডে কুকিজ অথেন্টিকেশন সেবা নিবন্ধন করতে হবে।

public void ConfigureServices(IServiceCollection services)
{
    // কুকিজ অথেন্টিকেশন সার্ভিস রেজিস্টার করা হচ্ছে
    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.LoginPath = "/Account/Login"; // লগইন পেজের রুট
                options.AccessDeniedPath = "/Account/AccessDenied"; // অ্যাক্সেস ডিনাইড পেজ
            });

    services.AddControllersWithViews();
}

এখানে, AddCookie মেথডটি কুকিজ ভিত্তিক অথেন্টিকেশন কনফিগার করে এবং লগইন এবং অ্যাক্সেস ডিনাইড পেজ নির্ধারণ করে।

২. Configure মেথডে Authentication কনফিগার করা

এখন Configure মেথডে AuthenticationMiddleware যুক্ত করুন।

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    // Authentication middleware যুক্ত করা
    app.UseAuthentication();

    // Authorization middleware যুক্ত করা
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

এখানে app.UseAuthentication() এবং app.UseAuthorization() middleware ব্যবহার করে, অ্যাপ্লিকেশনকে authentication এবং authorization নিশ্চিত করা হয়।


লগইন এবং কুকিজে তথ্য সংরক্ষণ

১. লগইন কন্ট্রোলার তৈরি করা

এখন, কুকিজে অথেন্টিকেশন তথ্য সংরক্ষণ করার জন্য একটি Login অ্যাকশন তৈরি করতে হবে। ব্যবহারকারী সফলভাবে লগইন করলে, একটি কুকি তৈরি করে ব্যবহারকারীকে সিস্টেমে প্রবেশাধিকার দেওয়া হবে।

public class AccountController : Controller
{
    private readonly IAuthenticationService _authenticationService;

    public AccountController(IAuthenticationService authenticationService)
    {
        _authenticationService = authenticationService;
    }

    [HttpPost]
    public async Task<IActionResult> Login(string username, string password)
    {
        // ইউজারের তথ্য যাচাই
        if (IsValidUser(username, password))
        {
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, username), // ইউজার নাম কুকিতে সংরক্ষণ
                // অন্যান্য claims যেমন রোল বা পারমিশনও যোগ করা যেতে পারে
            };

            var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
            var principal = new ClaimsPrincipal(identity);

            // কুকিতে লগইন তথ্য সংরক্ষণ
            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);

            return RedirectToAction("Index", "Home");
        }

        // ইউজার সঠিক নয়
        return View();
    }

    private bool IsValidUser(string username, string password)
    {
        // সঠিক ব্যবহারকারী যাচাই করা (এটি উদাহরণস্বরূপ)
        return username == "admin" && password == "password";
    }
}

এখানে, SignInAsync মেথডটি কুকিজে ইউজারের claims ইনজেক্ট করে এবং ইউজারকে লগইন করা হয়।


Authorization কনফিগারেশন

কুকিজ ব্যবহারের মাধ্যমে Authorization কনফিগারেশন করা হয় যাতে নির্দিষ্ট রোল বা পারমিশন অনুযায়ী ইউজারদের অ্যাক্সেস প্রদান করা যায়।

১. Role-based Authorization

[Authorize(Roles = "Admin")]
public IActionResult AdminPage()
{
    return View();
}

এখানে, শুধুমাত্র Admin রোল থাকা ইউজারদের AdminPage অ্যাক্সেস করতে দেওয়া হবে।

২. Claims-based Authorization

Claims-based authorization এর মাধ্যমে, ইউজারের একটি নির্দিষ্ট claim এর ভিত্তিতে অনুমোদন করা হয়।

[Authorize(ClaimTypes.Name, "admin")]
public IActionResult AdminDashboard()
{
    return View();
}

এখানে, Name claim যাচাই করা হচ্ছে এবং শুধুমাত্র "admin" নামের ইউজারদের AdminDashboard অ্যাক্সেস দেওয়া হবে।


কুকিজের মাধ্যমে Logout প্রক্রিয়া

অ্যাপ্লিকেশন থেকে লগআউট করার জন্য কুকিজ মুছে ফেলা হয়।

public async Task<IActionResult> Logout()
{
    await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
    return RedirectToAction("Index", "Home");
}

এখানে, SignOutAsync মেথডটি কুকি মুছে দেয় এবং ইউজারকে সিস্টেম থেকে লগআউট করে।


সারাংশ

ASP.Net Core এ কুকিজ ব্যবহার করে Authentication এবং Authorization নিশ্চিত করা যায়। কুকিজ ব্যবহারের মাধ্যমে, আপনি ব্যবহারকারীর সেশন তথ্য এবং অনুমোদন বিস্তারিত নিরাপদে সংরক্ষণ করতে পারেন এবং বিভিন্ন রোল বা পারমিশনের উপর ভিত্তি করে তাদের অ্যাক্সেস কন্ট্রোল করতে পারেন।

Content added By
Promotion