C# (.NET) में प्रमाणीकरण और अधिकारिता: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में प्रमाणीकरण और अधिकारिता: बुनियादी से उद्योग-स्तरीय समाधान तक

वेब एप्लिकेशन की सुरक्षा विकास का एक महत्वपूर्ण पहलू है, और C# (.NET) इकोसिस्टम में प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और अधिकारिता (पहुँच अधिकार जाँचना) के लिए शक्तिशाली टूल्स का एक सेट मौजूद है। इस लेख में, हम मुख्य दृष्टिकोणों पर चर्चा करेंगे: बिल्ट-इन ASP.NET Core Identity से लेकर JWT और OAuth 2.0 पर आधारित लचीले समाधानों तक।

1. ASP.NET Core Identity — बिल्ट-इन उपयोगकर्ता प्रबंधन प्रणाली

ASP.NET Core Identity रजिस्ट्रेशन, लॉगिन, भूमिका और पासवर्ड प्रबंधन के लिए एक पूर्ण फ्रेमवर्क है। यह तैयार मॉडल (User, Role), स्टोरेज (डिफ़ॉल्ट रूप से Entity Framework + SQL Server) और मिडलवेयर प्रदान करता है।

// Program.cs में रजिस्ट्रेशन
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddDefaultIdentity<IdentityUser>(options =>
{
    options.SignIn.RequireConfirmedAccount = true;
    options.Password.RequiredLength = 8;
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>();

// Middleware
app.UseAuthentication();
app.UseAuthorization();

सुरक्षा के साथ कंट्रोलर का उदाहरण:

[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
    public IActionResult Index() => View();
}

// वर्तमान उपयोगकर्ता प्राप्त करना
var user = await _userManager.GetUserAsync(User);
var roles = await _userManager.GetRolesAsync(user);

2. JWT (JSON Web Token) — API और SPA के लिए निर्बाध प्रमाणीकरण

JWT एक कॉम्पैक्ट, URL-सुरक्षित टोकन है जिसमें उपयोगकर्ता के बारे में दावे (claims) होते हैं। यह REST API, मोबाइल एप्लिकेशन और Single Page Applications (React, Angular, Vue) के लिए आदर्श है।

पैकेज इंस्टॉल करना:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

Program.cs में कॉन्फ़िगरेशन:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "https://pythonlib.ru",
            ValidateAudience = true,
            ValidAudience = "https://api.pythonlib.ru",
            ValidateLifetime = true,
            IssuerSigningKey = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes("SuperSecretKey123!SuperSecretKey123!")),
            ClockSkew = TimeSpan.Zero
        };
    });

टोकन जनरेशन (उदाहरण के लिए, लॉगिन कंट्रोलर में):

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, user.UserName),
    new Claim(ClaimTypes.Role, "User"),
    new Claim("custom_claim", "value")
};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey123!"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken(
    issuer: "https://pythonlib.ru",
    audience: "https://api.pythonlib.ru",
    claims: claims,
    expires: DateTime.Now.AddHours(2),
    signingCredentials: creds);

return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });

एंडपॉइंट सुरक्षा:

[Authorize]
[HttpGet("profile")]
public IActionResult GetProfile()
{
    var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
    return Ok(new { Message = "पहुँच स्वीकृत", UserId = userId });
}

3. Cookie-प्रमाणीकरण — MVC एप्लिकेशन के लिए क्लासिक

पारंपरिक सर्वर-साइड एप्लिकेशन (Razor Pages, MVC) के लिए कुकी-प्रमाणीकरण का उपयोग करना सुविधाजनक है। उपयोगकर्ता को एक एन्क्रिप्टेड कुकी मिलती है जो हर अनुरोध के साथ स्वचालित रूप से भेजी जाती है।

builder.Services.AddAuthentication(CookieAu                    

अनुशंसाएँ