परिचय: आधुनिक अनुप्रयोगों में OAuth 2.0 और JWT की आवश्यकता क्यों है?
\nआधुनिक वेब डेवलपमेंट में, डेटा सुरक्षा और पहुंच प्रबंधन सबसे आगे आते हैं। हर दिन लाखों उपयोगकर्ता Google, Facebook या कॉर्पोरेट सिस्टम के माध्यम से एप्लिकेशन में लॉग इन करते हैं, बिना सीधे अपने पासवर्ड साझा किए। यहीं पर OAuth 2.0 प्रोटोकॉल और JWT (JSON Web Tokens) तकनीक काम में आती है।
\nOAuth 2.0 एक्सेस को प्रतिनिधि बनाने के लिए एक उद्योग मानक है। यह एप्लिकेशन को उपयोगकर्ता की साख को प्रकट किए बिना उसके संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। JWT, बदले में, एक कॉम्पैक्ट और स्व-निहित टोकन प्रारूप है जिसमें प्रमाणीकरण और प्राधिकरण की जांच के लिए सभी आवश्यक जानकारी होती है।
\nइस लेख में, हम व्यावहारिक रूप से समझेंगे कि ASP.NET Core का उपयोग करके C# पर OAuth 2.0 और JWT प्राधिकरण कैसे लागू करें। आप सीखेंगे कि प्राधिकरण सर्वर कैसे सेट करें, टोकन कैसे जनरेट करें और अपने API एंडपॉइंट को कैसे सुरक्षित करें। सभी कोड उदाहरण वास्तविक परियोजनाओं में उपयोग के लिए तैयार हैं।
\n\n1. IdentityServer4 के साथ प्राधिकरण सर्वर सेट करना
\nOAuth 2.0 को लागू करने के लिए, हम लोकप्रिय लाइब्रेरी IdentityServer4 का उपयोग करेंगे - यह ASP.NET Core के लिए एक फ्रेमवर्क है जो OpenID Connect और OAuth 2.0 प्रोटोकॉल को लागू करता है। आइए एक न्यूनतम प्राधिकरण सर्वर बनाकर शुरू करें।
\n\nचरण 1: पैकेज स्थापित करना और प्रोजेक्ट बनाना
\nएक नया ASP.NET Core वेब एप्लिकेशन (खाली टेम्पलेट) बनाएं और आवश्यक NuGet पैकेज स्थापित करें:
\ndotnet add package IdentityServer4\ndotnet add package Microsoft.AspNetCore.Authentication.JwtBearer\n\nचरण 2: क्लाइंट और संसाधनों का कॉन्फ़िगरेशन
\nपरीक्षण उपयोगकर्ताओं, क्लाइंट और संरक्षित संसाधनों को परिभाषित करें। Config.cs क्लास बनाएं:
public static class Config\n{\n public static IEnumerable<IdentityResource> IdentityResources =>\n new[] { new IdentityResources.OpenId(), new IdentityResources.Profile() };\n\n public static IEnumerable<ApiScope> ApiScopes =>\n new[] { new ApiScope("api1", "My API") };\n\n public static IEnumerable<Client> Clients =>\n new[]\n {\n new Client\n {\n ClientId = "client",\n AllowedGrantTypes = GrantTypes.ClientCredentials,\n ClientSecrets = { new Secret("secret".Sha256()) },\n AllowedScopes = { "api1" }\n }\n };\n}\n\nचरण 3: Startup.cs में सेवाओं का पंजीकरण
\nConfigureServices विधि में IdentityServer को कॉन्फ़िगर करें:
public void ConfigureServices(IServiceCollection services)\n{\n services.AddIdentityServer()\n .AddInMemoryIdentityResources(Config.IdentityResources)\n .AddInMemoryApiScopes(Config.ApiScopes)\n .AddInMemoryClients(Config.Clients)\n .AddTestUsers(TestUsers.Users);\n\n services.AddAuthentication()\n .AddJwtBearer("Bearer", options =>\n {\n options.Authority = "https://localhost:5001";\n options.TokenValidationParameters = new TokenValidationParameters\n {\n ValidateAudience = false\n };\n });\n}\nConfigure विधि में, app.UseIdentityServer() कॉल जोड़ें।
2. JWT टोकन का कार्यान्वयन: जनरेशन और सत्यापन
\nJWT टोकन तीन भागों से बना होता है: हेडर, पेलोड और हस्ताक्षर। .NET में, JWT का जनरेशन और सत्यापन अंतर्निहित तंत्रों का उपयोग करके किया जाता है।
\n\nमैन्युअल रूप से JWT टोकन जनरेट करना
\nकभी-कभी मैन्युअल रूप से टोकन बनाने की आवश्यकता होती है, उदाहरण के लिए, परीक्षण के लिए। निम्नलिखित कोड का उपयोग करें:
\nusing System.IdentityModel.Tokens.Jwt;\nusing Microsoft.IdentityModel.Tokens;\nusing System.Security.Claims;\nusing System.Text;\n\npublic string GenerateJwtToken(string userI