ক্লেইম ভিত্তিক Authorization হলো ASP.NET Core-এর একটি উন্নত নিরাপত্তা ফিচার, যা ব্যবহারকারীর পরিচয় এবং তাদের অধিকার যাচাই করতে ক্লেইম (Claims) ব্যবহার করে। ক্লেইম একটি কী-ভ্যালু জোড়া, যা ব্যবহারকারীর কিছু নির্দিষ্ট বৈশিষ্ট্য বা অনুমতি প্রকাশ করে। উদাহরণস্বরূপ, Role
, Email
, Department
বা Permission
ক্লেইম হতে পারে।
ASP.NET Core-এ ক্লেইম ভিত্তিক Authorization ব্যবহার করে নির্দিষ্ট ক্লেইমযুক্ত ব্যবহারকারীদের অ্যাক্সেস প্রদান করা হয়। এটি Policy-based Authorization এর মাধ্যমে বাস্তবায়ন করা হয়।
যখন ব্যবহারকারী সাইন ইন করে, তখন তাদের পরিচয়ের সাথে ক্লেইম যুক্ত করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ClaimsIdentity ব্যবহার করা হয়েছে:
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);
await HttpContext.SignInAsync(principal);
এখানে, ClaimTypes.Role
এবং কাস্টম ক্লেইম Department
ব্যবহার করে একটি পরিচয় তৈরি করা হয়েছে।
ASP.NET Core-এ ক্লেইম ভিত্তিক পলিসি তৈরি করতে হলে AddAuthorization মেথডে পলিসি যোগ করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("HROnly", policy =>
policy.RequireClaim("Department", "HR"));
});
services.AddControllersWithViews();
}
উপরের উদাহরণে, HROnly
পলিসিটি এমন ব্যবহারকারীদের জন্য প্রযোজ্য, যাদের ক্লেইম Department
এর মান "HR"।
[Authorize(Policy = "HROnly")]
public IActionResult HRDashboard()
{
return View();
}
এখানে, শুধুমাত্র "HR" বিভাগে থাকা ব্যবহারকারীরাই HRDashboard অ্যাক্সেস করতে পারবে।
public async Task<IActionResult> CheckPolicy()
{
var result = await _authorizationService.AuthorizeAsync(User, null, "HROnly");
if (result.Succeeded)
{
return View("Success");
}
else
{
return View("AccessDenied");
}
}
ASP.NET Core-এ একাধিক ক্লেইম চেক করতে হলে, পলিসিতে একাধিক শর্ত যোগ করা যেতে পারে।
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("AdminAndHR", policy =>
policy.RequireClaim(ClaimTypes.Role, "Admin")
.RequireClaim("Department", "HR"));
});
}
উপরের পলিসিটি এমন ব্যবহারকারীদের অনুমতি দেয়, যারা Admin রোলধারী এবং একইসাথে HR বিভাগে কাজ করে।
ক্লেইম চেক করার জন্য একটি Custom Policy Handler তৈরি করা যেতে পারে, যা জটিল শর্তাবলী যাচাই করতে সহায়তা করে।
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;
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("Experienced", policy =>
policy.Requirements.Add(new MinimumExperienceRequirement(5)));
});
services.AddSingleton<IAuthorizationHandler, MinimumExperienceHandler>();
}
ক্লেইম ভিত্তিক Authorization ASP.NET Core-এর একটি শক্তিশালী ফিচার, যা ব্যবহারকারীর নির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে অ্যাক্সেস নিয়ন্ত্রণ করে। এর মাধ্যমে:
ক্লেইম ভিত্তিক Authorization ব্যবহার করে আপনি নিরাপত্তা নিশ্চিত করার পাশাপাশি অ্যাপ্লিকেশনে নমনীয় অ্যাক্সেস কন্ট্রোল মডেল তৈরি করতে পারেন।
common.read_more