C# पर OAuth 2.0 और JWT का परिचय
आधुनिक वेब एप्लिकेशन और API को एक विश्वसनीय प्राधिकरण प्रणाली की आवश्यकता होती है। दो सबसे लोकप्रिय मानक — OAuth 2.0 (एक्सेस डेलिगेशन प्रोटोकॉल) और JWT (JSON Web Token, टोकन प्रारूप) — .NET पारिस्थितिकी तंत्र में सुरक्षा की नींव बन गए हैं। इस लेख में, हम ASP.NET Core में C# पर OAuth 2.0 और JWT प्राधिकरण को लागू करने का तरीका समझेंगे, एक प्राधिकरण सर्वर का उदाहरण बनाएंगे और API को सुरक्षित करेंगे।
चाहे आप एक मोनोलिथिक एप्लिकेशन या माइक्रोसर्विस आर्किटेक्चर बना रहे हों, इन तंत्रों को समझना अत्यंत महत्वपूर्ण है। OAuth 2.0 भूमिकाओं (क्लाइंट, प्राधिकरण सर्वर, संसाधन सर्वर) को परिभाषित करता है, और JWT उपयोगकर्ता के बारे में डेटा संचारित करने का एक संक्षिप्त और आत्मनिर्भर तरीका प्रदान करता है।
OAuth 2.0 के मूल सिद्धांत: प्रवाह और भूमिकाएँ
OAuth 2.0 क्या है?
OAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो तृतीय-पक्ष एप्लिकेशन को उपयोगकर्ता की क्रेडेंशियल्स प्रदान किए बिना उसके संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। लॉगिन और पासवर्ड के बजाय एक्सेस टोकन (access tokens) का उपयोग किया जाता है।
OAuth 2.0 में मुख्य भूमिकाएँ
- Resource Owner — उपयोगकर्ता जो डेटा का मालिक है।
- Client — एप्लिकेशन जो पहुंच का अनुरोध करता है।
- Authorization Server — सर्वर जो प्रमाणीकरण के बाद टोकन जारी करता है।
- Resource Server — API जो संसाधनों की सुरक्षा करता है और टोकन की जाँच करता है।
लोकप्रिय प्रवाह (grant types)
- Authorization Code — सर्वर एप्लिकेशन के लिए (सबसे सुरक्षित)।
- Client Credentials — अंतर-सर्वर संचार के लिए (उपयोगकर्ता के बिना)।
- Implicit — पुराना, अनुशंसित नहीं।
- Refresh Token — पासवर्ड दोबारा दर्ज किए बिना नया access token प्राप्त करने के लिए।
JWT (JSON Web Token): संरचना और कार्य सिद्धांत
JWT किससे बना होता है?
JWT एक स्ट्रिंग है जो तीन भागों से बनी होती है, जो बिंदुओं द्वारा अलग किए जाते हैं:
header.payload.signature- Header — टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे HS256 या RS256)।
- Payload — डेटा (claims): उपयोगकर्ता पहचानकर्ता, भूमिकाएँ, समाप्ति तिथि आदि।
- Signature — हस्ताक्षर जो सत्यापित करता है कि टोकन बदला नहीं गया है।
C# के लिए JWT के लाभ
- आत्मनिर्भरता — उपयोगकर्ता के बारे में सभी डेटा टोकन के अंदर होता है।
- डेटाबेस से संपर्क किए बिना संसाधन सर्वर पर आसान सत्यापन।
- .NET में लाइब्रेरी
Microsoft.AspNetCore.Authentication.JwtBearerके माध्यम से समर्थन।
ASP.NET Core में C# पर OAuth 2.0 + JWT का कार्यान्वयन
1. प्राधिकरण सर्वर सेटअप (JWT जारी करना)
हम एक न्यूनतम सर्वर बनाएंगे जो लॉगिन/पासवर्ड स्वीकार करता है और JWT लौटाता है। सरलता के लिए, हम सममित कुंजी (HS256) का उपयोग करेंगे।
// Program.cs — प्राधिकरण सर्वरusing Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.IdentityModel.Tokens.Jwt;using System.Security.Claims;using System.Text;
var builder = WebApplication.CreateBuilder(args);builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "MyAuthServer", ValidAudience = "MyApiClient", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey123!@#$%")) }; });
builder.Services.AddAuthorization();var app = builder.Build();
app.MapPost(