C# (.NET) के लिए OAuth क्लाइंट: तृतीय-पक्ष सेवाओं के माध्यम से प्राधिकरण का कार्यान्वयन

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

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

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

C# (.NET) के लिए OAuth क्लाइंट लाइब्रेरी: सुरक्षित प्राधिकरण का कार्यान्वयन



आधुनिक वेब डेवलपमेंट में, OAuth 2.0 प्रोटोकॉल के माध्यम से बाहरी सेवाओं (Google, GitHub, Facebook, आदि) के साथ एकीकरण एक डी-फैक्टो मानक बन गया है। .NET प्लेटफ़ॉर्म के लिए कई परिपक्व समाधान मौजूद हैं, लेकिन सबसे लचीला और कुशल समाधानों में से एक C# (.NET) के लिए OAuth क्लाइंट लाइब्रेरी है, जो NuGet पैकेज OAuthClient.Net के माध्यम से उपलब्ध है। यह लाइब्रेरी डेवलपर्स को Authorization Code Flow, Implicit Grant और Client Credentials Flow को लागू करने के लिए उपकरणों का एक पूरा सेट प्रदान करती है।



लाइब्रेरी की मुख्य विशेषताएं



  • सभी लोकप्रिय OAuth 2.0 प्रदाताओं के लिए समर्थन — Google, GitHub, Microsoft, Facebook, VK, Yandex और कस्टम सर्वर।
  • टोकन का स्वचालित प्रबंधन — Access Token, Refresh Token प्राप्त करना, समाप्ति पर स्वचालित नवीनीकरण।
  • CSRF हमलों से अंतर्निहित सुरक्षा — state-पैरामीटर का निर्माण और सत्यापन।
  • एसिंक्रोनस कार्य — सभी विधियाँ async/await का समर्थन करती हैं।
  • लचीला कॉन्फ़िगरेशन — कोड या JSON फ़ाइल के माध्यम से सेटिंग।
  • विस्तारशीलता — इंटरफ़ेस के माध्यम से स्वयं के प्रदाता जोड़ने की क्षमता।


स्थापना और कनेक्शन



स्थापना NuGet Package Manager के माध्यम से की जाती है:



Install-Package OAuthClient.Net -Version 2.1.0


या .NET CLI के माध्यम से:



dotnet add package OAuthClient.Net --version 2.1.0


स्थापना के बाद, नाम स्थान आयात करना आवश्यक है:



using OAuthClient;using OAuthClient.Models;using OAuthClient.Providers;


मूल उदाहरण: Google के माध्यम से प्राधिकरण



आइए सबसे सरल परिदृश्य पर विचार करें — सफल प्राधिकरण के बाद Google से उपयोगकर्ता डेटा प्राप्त करना।



public async Task<UserInfo> AuthenticateWithGoogleAsync(){    // प्रदाता का कॉन्फ़िगरेशन    var googleProvider = new GoogleOAuthProvider(        clientId: "YOUR_GOOGLE_CLIENT_ID",        clientSecret: "YOUR_GOOGLE_CLIENT_SECRET",        redirectUri: "https://yourapp.com/oauth/callback"    );

// क्लाइंट बनाना var oauthClient = new OAuthClient(googleProvider);

// उपयोगकर्ता को रीडायरेक्ट करने के लिए URL जनरेट करना string authUrl = oauthClient.GetAuthorizationUrl( scope: new[] { "openid", "profile", "email" }, state: Guid.NewGuid().ToString() );

// उपयोगकर्ता के callback URL पर वापस आने के बाद: // query-पैरामीटर "code" से कोड निकालना string authorizationCode = HttpContext.Request.Query["code"];

// कोड को टोकन में बदलना var tokenResponse = await oauthClient.ExchangeCodeForTokenAsync(authorizationCode);

// उपयोगकर्ता के बारे में जानकारी प्राप्त करना var userInfo = await oauthClient.GetUserInfoAsync(tokenResponse.AccessToken);

return userInfo;}


Refresh Token के साथ कार्य



लंबे समय तक चलने वाले सत्रों के लिए, लाइब्रेरी स्वचालित रूप से टोकन नवीनीकरण का प्रबंधन करती है। सत्र को सहेजने और पुनर्स्थापित करने का उदाहरण:



// पहले प्राधिकरण के बाद Refresh Token सहेजनाstring refreshToken = tokenResponse.RefreshToken;// इसे डेटाबेस या सुरक्षित भंडारण में सहेजें

// सत्र पुनर्स्थापित करना: नया Access Token प्राप्त करनाvar newTokenResponse = await oauthClient.RefreshAccessTokenAsync(refreshToken);

// स्वचालित नवीनीकरण (अंतर्निहित तर्क)oauthClient.TokenRefreshed += (sender, args) =>{ // नए Refresh Token को लॉग या सहेजें Console.WriteLine($"नया Refresh Token: {args.NewRefreshToken}");};


कस्टम OAuth प्रदाता



यदि किसी ऐसी सेवा से कनेक्ट करना आवश्यक है जो अंतर्निहित प्रदाताओं की सूची में नहीं है, तो लाइब्रेरी स्वयं का प्रदाता बनाने की अनुमति देती है:



public class CustomProvi                    

अनुशंसाएँ