ASP.Net MVC-তে Authorization একটি গুরুত্বপূর্ণ নিরাপত্তা প্রক্রিয়া, যা নিশ্চিত করে যে একজন ব্যবহারকারী নির্দিষ্ট রিসোর্স বা অ্যাকশনে অ্যাক্সেস করতে পারবেন কি না। Authorization বিভিন্ন পদ্ধতির মাধ্যমে কার্যকর করা যায়, যেমন Roles, Claims, এবং Policy-based Authorization। এগুলো অ্যাপ্লিকেশনকে আরও সুরক্ষিত ও ফ্লেক্সিবল করে তোলে।
Role-based Authorization
Role-based Authorization ব্যবহারকারীর একটি নির্দিষ্ট রোলের উপর ভিত্তি করে তাদের অ্যাক্সেস নিয়ন্ত্রণ করে। এটি AuthorizeAttribute ব্যবহার করে সহজে প্রয়োগ করা যায়।
কনফিগারেশন:
- ব্যবহারকারীকে নির্দিষ্ট রোল অ্যাসাইন করুন (যেমন "Admin", "User")।
- AuthorizeAttribute দিয়ে রোল চেক করুন।
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
একাধিক রোলের জন্য:
[Authorize(Roles = "Admin,Manager")]
public class ManagementController : Controller
{
public IActionResult Overview()
{
return View();
}
}
Claims-based Authorization
Claims-based Authorization ব্যবহারকারীর সম্পর্কে নির্দিষ্ট তথ্য বা বৈশিষ্ট্যের উপর ভিত্তি করে কাজ করে। Claims হলো ব্যবহারকারীর তথ্যের একটি সেট যা Authentication টোকেনের অংশ হিসেবে পাঠানো হয়।
Claim অ্যাসাইন করা:
Claims সাধারণত Authentication Token তৈরি করার সময় নির্ধারণ করা হয়।
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, "John Doe"),
new Claim(ClaimTypes.Role, "Admin"),
new Claim("Department", "HR")
};
var identity = new ClaimsIdentity(claims, "CustomAuth");
var principal = new ClaimsPrincipal(identity);
HttpContext.SignInAsync(principal);
Claim চেক করা:
[Authorize(Policy = "HRPolicy")]
public class HRController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
Policy-based Claim চেক:
Policy তৈরি করে Claim চেক করা যেতে পারে।
Policy-based Authorization
Policy-based Authorization হলো উন্নতমানের Authorization পদ্ধতি, যা Claim বা Role-এর ভিত্তিতে কাস্টম নিয়ম সংজ্ঞায়িত করে।
Policy কনফিগার করা:
Policy কনফিগার করার জন্য Startup.cs-এ AddAuthorization মেথড ব্যবহার করুন।
services.AddAuthorization(options =>
{
options.AddPolicy("HRPolicy", policy =>
policy.RequireClaim("Department", "HR"));
options.AddPolicy("ManagerPolicy", policy =>
policy.RequireRole("Manager"));
});
Controller বা Action-এ Policy প্রয়োগ করা:
[Authorize(Policy = "HRPolicy")]
public class HRController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
Custom Policy Creation
Custom Authorization Policy তৈরি করে আরও জটিল নিয়ম সংজ্ঞায়িত করা সম্ভব।
Custom Policy Handler:
Custom Policy Handler তৈরি করে Policy চেক করুন।
public class MinimumExperienceHandler : AuthorizationHandler<MinimumExperienceRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MinimumExperienceRequirement requirement)
{
var experienceClaim = context.User.FindFirst("Experience");
if (experienceClaim != null && int.Parse(experienceClaim.Value) >= requirement.MinimumYears)
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
public class MinimumExperienceRequirement : IAuthorizationRequirement
{
public int MinimumYears { get; }
public MinimumExperienceRequirement(int years)
{
MinimumYears = years;
}
}
Custom Policy রেজিস্টার করা:
services.AddAuthorization(options =>
{
options.AddPolicy("ExperiencePolicy", policy =>
policy.Requirements.Add(new MinimumExperienceRequirement(5)));
});
Policy প্রয়োগ করা:
[Authorize(Policy = "ExperiencePolicy")]
public class ProjectsController : Controller
{
public IActionResult Index()
{
return View();
}
}
Authorization Techniques-এর তুলনা
| Technique | Key Feature | Best Use Case |
|---|---|---|
| Role-based | নির্দিষ্ট রোলের উপর ভিত্তি করে | সাধারণ অ্যাপ্লিকেশন যেখানে রোলের গুরুত্ব বেশি |
| Claims-based | ব্যবহারকারীর Claim-এর উপর ভিত্তি করে | ব্যবহারকারীর বৈশিষ্ট্য ভিত্তিক অ্যাপ্লিকেশন |
| Policy-based | Custom নিয়ম সংজ্ঞায়িত করতে ব্যবহৃত | জটিল ও কাস্টম নিয়ম প্রয়োজন হলে |
সারমর্ম
Role-based, Claims-based, এবং Policy-based Authorization ASP.Net MVC-তে Authorization নিশ্চিত করার জন্য অত্যন্ত কার্যকর পদ্ধতি। Role-based পদ্ধতি সহজ এবং সাধারণ ব্যবহারের জন্য উপযুক্ত, Claims-based পদ্ধতি ব্যবহারকারীর বিস্তারিত বৈশিষ্ট্য যাচাই করার জন্য কার্যকর, এবং Policy-based পদ্ধতি জটিল নিয়ম সংজ্ঞায়িত করার জন্য আদর্শ। অ্যাপ্লিকেশনের চাহিদা এবং নিরাপত্তার স্তর অনুযায়ী এই পদ্ধতিগুলোর যেকোনো একটি বা একাধিক পদ্ধতি একত্রে ব্যবহার করা যায়।
Read more