OAuth এবং OpenID Connect হলো দুটি জনপ্রিয় অথেন্টিকেশন ও অথরাইজেশন প্রোটোকল যা আধুনিক ওয়েব অ্যাপ্লিকেশন এবং API নিরাপত্তায় গুরুত্বপূর্ণ ভূমিকা পালন করে। ASP.NET Core অ্যাপ্লিকেশনগুলিতে নিরাপত্তা সংক্রান্ত কাজের জন্য এই প্রোটোকলগুলির ইন্টিগ্রেশন খুবই সহজ এবং শক্তিশালী।
OAuth (Open Authorization) একটি অথরাইজেশন ফ্রেমওয়ার্ক যা ইউজারের ক্রেডেনশিয়াল না নিয়ে তৃতীয় পক্ষের অ্যাপ্লিকেশনকে ইউজারের রিসোর্স অ্যাক্সেসের অনুমতি দেয়। এই প্রোটোকল মূলত অ্যাপ্লিকেশনের মধ্যে সুরক্ষিত ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।
উদাহরণস্বরূপ, আপনি যদি একটি অ্যাপ্লিকেশনে গুগল বা ফেসবুক অ্যাকাউন্ট ব্যবহার করে লগ ইন করেন, তবে এটি OAuth প্রোটোকলের মাধ্যমে ঘটে। OAuth ইউজারকে তার ক্রেডেনশিয়াল (যেমন, পাসওয়ার্ড) সরাসরি শেয়ার না করে তৃতীয় পক্ষের অ্যাপ্লিকেশনকে এক্সেস টোকেন প্রদান করে। এই টোকেনটি ব্যবহার করে অ্যাপ্লিকেশন নির্দিষ্ট রিসোর্স (যেমন, ইউজারের প্রোফাইল বা ফটো) অ্যাক্সেস করতে পারে।
OpenID Connect (OIDC) হল OAuth 2.0 এর উপর একটি লেয়ার যা অথেন্টিকেশন প্রদান করে। OAuth শুধুমাত্র অথরাইজেশন দিয়ে থাকে, তবে OpenID Connect ইউজারের পরিচয় যাচাই করার জন্য একটি শীর্ষ স্তরের প্রটোকল সরবরাহ করে। এটি ইউজারের লগইন প্রক্রিয়া সহজ করে তোলে এবং অ্যাপ্লিকেশনকে নিশ্চিত করতে সহায়তা করে যে তারা যে ইউজারের পরিচয় যাচাই করছে, সেই ইউজারের আসলই বা না।
যদি OAuth একটি এক্সেস টোকেন প্রদান করে, তবে OpenID Connect একটি ID Token প্রদান করে যা ইউজারের পরিচয় নিশ্চিত করে।
ASP.NET Core-এ OAuth এবং OpenID Connect ইন্টিগ্রেশন করার জন্য, আপনি ASP.NET Core Identity এবং Authentication Middleware ব্যবহার করতে পারেন। এর মাধ্যমে আপনি গুগল, ফেসবুক, গিটহাব বা অন্য কোনো আইডেন্টিটি প্রোভাইডারের সাথে সিঙ্ক্রোনাইজ করতে পারবেন।
NuGet প্যাকেজ ইনস্টলেশন:
প্রথমে, ASP.NET Core অ্যাপ্লিকেশনে OAuth এবং OpenID Connect ইন্টিগ্রেশন করার জন্য Microsoft.AspNetCore.Authentication.OAuth
এবং Microsoft.AspNetCore.Authentication.OpenIdConnect
প্যাকেজ ইনস্টল করুন।
dotnet add package Microsoft.AspNetCore.Authentication.OAuth
dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
Startup.cs কনফিগারেশন:
Startup.cs
ফাইলে Authentication Middleware কনফিগার করা হবে। এখানে OpenID Connect প্রোভাইডার কনফিগার করা হচ্ছে।
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
})
.AddOpenIdConnect(options =>
{
options.Authority = "https://identityprovider.com"; // Identity provider URL
options.ClientId = "YourClientId";
options.ClientSecret = "YourClientSecret";
options.ResponseType = "code";
options.SaveTokens = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.CallbackPath = "/signin-oidc";
});
}
এখানে:
Authentication চ্যালেঞ্জ:
আপনি যখন ইউজারকে অথেন্টিকেট করতে চান, তখন ChallengeAsync মেথড ব্যবহার করতে হবে।
public async Task<IActionResult> Login()
{
await HttpContext.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties
{
RedirectUri = "/"
});
return RedirectToAction("Index", "Home");
}
এই কোডটি ইউজারকে OpenID Connect প্রোভাইডারে রিডাইরেক্ট করবে।
Logout:
Logout প্রক্রিয়াটি এমনভাবে কনফিগার করা হয় যাতে ইউজারকে সিস্টেম থেকে লগ আউট করার পর প্রোভাইডারের সেশনও শেষ হয়ে যায়।
public async Task<IActionResult> Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties
{
RedirectUri = "/"
});
return RedirectToAction("Index", "Home");
}
OAuth এবং OpenID Connect আধুনিক ওয়েব অ্যাপ্লিকেশনগুলির নিরাপত্তা এবং ইউজার অথেন্টিকেশন সহজ এবং নিরাপদ করে তোলে। ASP.NET Core-এ এই দুটি প্রোটোকলকে ইন্টিগ্রেট করা অনেক সহজ এবং এটি একটি স্কেলেবল অথেন্টিকেশন ব্যবস্থা প্রদান করে, যা ব্যবহারকারীদের তাদের সামাজিক অ্যাকাউন্টের মাধ্যমে দ্রুত এবং নিরাপদ লগইন করার সুযোগ দেয়।
common.read_more