
ভূমিকা
আজকের দিনে password leak, brute force, phishing attack—এসবের ঝুঁকি প্রতিনিয়ত বাড়ছে। শুধু পাসওয়ার্ডের ওপর নির্ভর করলে আপনার অ্যাপ্লিকেশন সিকিউরিটি দুর্বল হয়ে যায়। তাই প্রয়োজন Two-Factor Authentication (2FA), যা ইউজার লগইনের সময় অতিরিক্ত সিকিউরিটি লেয়ার যোগ করে।
এই গাইডে আমরা দেখব কিভাবে একটি .NET প্রজেক্টে ASP.NET Core Identity ব্যবহার করে ধাপে ধাপে 2FA enable করা যায়।
2FA কী?
2FA মানে হলো লগইন করার সময় পাসওয়ার্ডের পাশাপাশি আরেকটি প্রমাণীকরণ ধাপ (OTP, SMS, Email, অথবা Authenticator App কোড)।
সবচেয়ে জনপ্রিয় 2FA মেথডগুলো হলো:
- Authenticator Apps (Google Authenticator, Microsoft Authenticator, Authy) → TOTP কোড জেনারেট করে।
- SMS / Email Codes → ইউজারের ফোন বা ইমেইলে একবারের কোড পাঠায়।
- Hardware Token (YubiKey ইত্যাদি) → ফিজিকাল ডিভাইস।
.NET-এ 2FA কিভাবে কাজ করে
- ASP.NET Core Identity-তে 2FA এর বিল্ট-ইন সাপোর্ট আছে।
- ইউজার প্রথমে username + password দিয়ে লগইন করবে।
- এরপর 2FA কোড ইনপুট করতে হবে।
- কোড সঠিক হলে লগইন success, না হলে reject।
ধাপে ধাপে সেটআপ
1. প্রজেক্ট প্রস্তুতি
প্রথমে ASP.NET Core Identity ইনস্টল করুন:
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
Startup.cs
/ Program.cs
-এ Identity configure করুন:
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.Tokens.AuthenticatorTokenProvider = TokenOptions.DefaultAuthenticatorProvider;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
2. Enable 2FA Options
- Email 2FA → Default Email provider configure করতে হবে।
- SMS 2FA → Twilio বা অন্য SMS service integrate করতে হবে।
- Authenticator App (TOTP) → ইউজারকে QR code দেখানো হবে যা Google Authenticator-এ scan করা যায়।
var user = await _userManager.GetUserAsync(User);
var key = await _userManager.GetAuthenticatorKeyAsync(user);
3. UI & Controller Setup
একটা settings পেজ তৈরি করুন যেখানে ইউজার 2FA enable করতে পারবে।
[HttpPost]
public async Task<IActionResult> Enable2FA()
{
var user = await _userManager.GetUserAsync(User);
await _userManager.SetTwoFactorEnabledAsync(user, true);
return RedirectToAction("TwoFactorConfirmation");
}
UI তে QR code জেনারেট করার জন্য:
var authenticatorKey = await _userManager.GetAuthenticatorKeyAsync(user);
var qrCodeUrl = $"otpauth://totp/{user.Email}?secret={authenticatorKey}&issuer=MyApp";
4. Login Flow
- User → Username + Password
- Prompt → Enter 2FA code
- Verify →
var result = await _signInManager.TwoFactorAuthenticatorSignInAsync(code, false, false);
if (result.Succeeded) {
// Login success
} else {
// Error message
}
5. Backup & Recovery
Recovery codes জেনারেট করুন:
var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10);
এগুলো ইউজারকে সংরক্ষণ করতে বলুন (lost device হলে ব্যবহার হবে)।
টেস্টিং
- Localhost-এ Google Authenticator-এ QR code scan করুন।
- কোড টাইমসিঙ্ক ঠিক আছে কিনা টেস্ট করুন।
- ভুল কোড দিলে সঠিক error message show করুন।
Best Practices
- SMS শুধুমাত্র fallback হিসেবে ব্যবহার করুন (SIM hijack হতে পারে)।
- সবসময় recovery codes প্রদান করুন।
- ক্লক টাইম sync না থাকলে কোড mismatch হতে পারে—NTP সার্ভার ব্যবহার করুন।
- Security logs এ 2FA event ট্র্যাক করুন।
Common Problems & Solutions
- Code mismatch → Server & Authenticator app time sync check করুন।
- Lost device → Recovery codes / backup email দিয়ে লগইন করুন।
- Multiple device → New secret জেনারেট করতে হবে।
সারসংক্ষেপ
.NET প্রজেক্টে 2FA সেটআপ করা আসলে খুবই সহজ।
- ASP.NET Identity already বিল্ট-ইন টোকেন provider দেয়।
- আপনি চাইলে Email, SMS, বা Authenticator app সাপোর্ট করতে পারেন।
- Recovery codes ব্যবহার করলে ইউজারদের জন্য নিরাপদ fallback থাকে।
👉 এখনই আপনার প্রজেক্টে 2FA enable করুন আর ইউজারের অ্যাকাউন্ট নিরাপত্তা বাড়ান।