पाठ 22 / 26

JWT से Authentication और Authorization

JWT bearer tokens से endpoints सुरक्षित करें और authentication व authorization का फ़र्क़ समझें।

आप कौन हैं, आप क्या कर सकते हैं

Authentication बताता है "यह कौन है?" और authorization बताता है "क्या यह ऐसा कर सकता है?" JWT एक signed token है जिसे client Authorization: Bearer ... header में भेजता है; API उसका signature, issuer, audience और expiry जाँचती है।

JWT bearer जोड़ें

Microsoft.AspNetCore.Authentication.JwtBearer package जोड़ें। Authority और audience आम तौर पर आपके identity provider, जैसे Entra ID, Auth0 या Keycloak, से आते हैं।

builder.Services.AddAuthentication("Bearer").AddJwtBearer(o =>
{
    o.Authority = builder.Configuration["Auth:Authority"];
    o.Audience  = builder.Configuration["Auth:Audience"];
});
builder.Services.AddAuthorization();

var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();

app.MapGet("/me", (ClaimsPrincipal user) => user.Identity?.Name)
   .RequireAuthorization();

Tokens को अल्पकालिक रखें

JWT में secrets कभी न रखें: वह सिर्फ़ signed होता है, encrypted नहीं, इसलिए payload कोई भी पढ़ सकता है। छोटी expiry, सिर्फ़ HTTPS और refresh flow रखें। अपना login system लिखने की जगह identity provider चुनें।

त्वरित जाँच: कौन-सी call endpoint के लिए signed-in user ज़रूरी बनाती है?

  • .AllowAnonymous()
  • .WithName()
  • .RequireAuthorization()
  • .Produces()
Answer

.RequireAuthorization() — `RequireAuthorization()` endpoint को ऐसी requests अस्वीकार करवाता है जो authenticated और authorized नहीं हैं।