परिचय: OAuth 2.0 और JWT आधुनिक प्राधिकरण का मानक क्यों हैं?
\nआधुनिक वेब डेवलपमेंट में, क्लाइंट और सर्वर के बीच डेटा का सुरक्षित स्थानांतरण एक महत्वपूर्ण कार्य है। दो प्रमुख प्रोटोकॉल जो इस कार्य को हल करने में मदद करते हैं, वे हैं OAuth 2.0 (ओपन ऑथराइज़ेशन प्रोटोकॉल) और JWT (JSON Web Token)।
\nOAuth 2.0 एप्लिकेशन को उपयोगकर्ता के लॉगिन और पासवर्ड को साझा किए बिना उसके संसाधनों तक सीमित पहुँच प्राप्त करने की अनुमति देता है। दूसरी ओर, JWT एक कॉम्पैक्ट और स्व-निहित टोकन प्रारूप है जिसमें उपयोगकर्ता की पहचान के लिए सभी आवश्यक जानकारी होती है।
\nइस लेख में, हम समझेंगे कि C# (.NET) पर OAuth 2.0 और JWT प्राधिकरण कैसे लागू करें। आप सीखेंगे कि middleware कैसे सेट करें, टोकन कैसे जनरेट करें और API एंडपॉइंट को कैसे सुरक्षित करें। यह सामग्री शुरुआती डेवलपर्स के लिए है जो ASP.NET Core की मूल बातों से परिचित हैं।
\n\n1. OAuth 2.0 और JWT की मूल बातें
\nकोड लिखने से पहले, आइए प्रमुख अवधारणाओं को समझें।
\nOAuth 2.0 क्या है?
\nOAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो तृतीय-पक्ष एप्लिकेशन को उपयोगकर्ता की क्रेडेंशियल्स को साझा किए बिना उसके संसाधनों (जैसे प्रोफ़ाइल डेटा) तक पहुँच प्राप्त करने की अनुमति देता है। इसके बजाय, एक एक्सेस टोकन (access token) का उपयोग किया जाता है।
\nOAuth 2.0 में मुख्य भूमिकाएँ:
\n- \n
- Resource Owner — संसाधनों का मालिक उपयोगकर्ता। \n
- Client — पहुँच का अनुरोध करने वाला एप्लिकेशन। \n
- Authorization Server — उपयोगकर्ता के प्रमाणीकरण के बाद टोकन जारी करने वाला सर्वर। \n
- Resource Server — सुरक्षित संसाधन (जैसे API) प्रदान करने वाला सर्वर। \n
JWT क्या है?
\nJWT (JSON Web Token) एक टोकन प्रारूप है जो तीन भागों से बना होता है, जो बिंदुओं द्वारा अलग किए जाते हैं:
\n- \n
- Header — इसमें टोकन का प्रकार (JWT) और हस्ताक्षर एल्गोरिदम (जैसे HS256) होता है। \n
- Payload — इसमें डेटा (claims) होता है, जैसे उपयोगकर्ता आईडी, भूमिका, समाप्ति तिथि। \n
- Signature — हस्ताक्षर जो टोकन की अखंडता सुनिश्चित करता है। \n
JWT टोकन इस तरह दिखता है: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT स्व-निहित है: सर्वर को डेटाबेस में सत्र संग्रहीत करने की आवश्यकता नहीं है, सारी जानकारी पहले से टोकन में एन्क्रिप्टेड होती है।
\n\n2. JWT प्राधिकरण के लिए ASP.NET Core प्रोजेक्ट सेट करना
\nहम एक नया ASP.NET Core Web API प्रोजेक्ट बनाएंगे और JWT प्राधिकरण सेट करेंगे।
\nचरण 1: NuGet पैकेज स्थापित करना
\nJWT के साथ काम करने के लिए हमें Microsoft.AspNetCore.Authentication.JwtBearer पैकेज की आवश्यकता है। इसे NuGet Package Manager या कंसोल के माध्यम से स्थापित करें:
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer\nचरण 2: appsettings.json कॉन्फ़िगर करना
\nJWT पैरामीटर (गुप्त कुंजी, जारीकर्ता, श्रोता) संग्रहीत करने के लिए एक अनुभाग जोड़ें:
\n{\n "Jwt": {\n "Key": "YourSuperSecretKey123!@#$%^&*()",\n "Issuer": "YourApp",\n "Audience": "YourAppUsers",\n "ExpireMinutes": 60\n }\n}\nचरण 3: Program.cs कॉन्फ़िगर करना
\nProgram.cs (या पुराने संस्करणों के लिए Startup.cs) फ़ाइल में, हम प्रमाणीकरण सेवाएँ और middleware जोड़ते हैं:
using Microsoft.AspNetCore.Authentication.JwtBearer;\nusing Microsoft.IdentityModel.Tokens;\nusing System.Text;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// JWT प्रमाणीकरण कॉन्फ़िगर करना\nbuilder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)\n .AddJwtBearer(options =>\n {\n options.TokenValidationParameters = new TokenValidationParameters\n {\n ValidateIssuer = true,\n ValidateAudience = true,\n ValidateLifetime = true,\n ValidateIssuerSigningKey = true,