ओएथ एक प्रोटोकॉल है; वर्तमान संस्करण OAuth 2.0 है। आपके प्रश्न के लिए, यह लिंक विभिन्न तकनीकों में प्रोटोकॉल के कई कार्यान्वयन सूचीबद्ध करता है। .NET वेब एपीआई के उपयोग के लिए आपको शायद DotNetOpenAuth में दिलचस्पी है जो ओएथ 1 और ओएथ 2 दोनों के कार्यान्वयन प्रदान करता है।
मैं एक ऐप में DotNetOpenAuth का उपयोग कर रहा हूं जिसे मैं अभी .NET वेब सुरक्षित करने के लिए काम कर रहा हूं एपीआई। मुझे OAuth2Handler
मिल गया है जो DelegatingHandler
बढ़ाता है जो आने वाले अनुरोध किसी भी नियंत्रक तक पहुंचने से पहले वेब एपीआई पाइपलाइन में डाला जाता है। OAuth2Handler
निम्नलिखित है:
- को दर्शाता है एक DotNetOpenAuth
ResourceServer
- कॉल
ResourceServer.GetPrincipal()
जो पढ़ता है और एक पहुँच टोकन (AuthorizationServer
द्वारा अन्यत्र जारी decrypts और एक OAuthPrincipal
(मेरे मामले में मैं पढ़ रहा हूँ अतिरिक्त डेटा देता है कि DotNetOpenAuth कार्यान्वयन आपको ClaimsPrincipal
को पास करने और बनाने की अनुमति देता है।)
IPrincipal
असाइन करना जिसमें उपयोगकर्ता जानकारी थ्रेड से उपयोगकर्ता जानकारी और थ्रेड की वर्तमान संपत्ति संदर्भ में पढ़ी गई है तो यह सेवा नियंत्रकों में ApiController.User
संपत्ति से उपलब्ध है: ईमानदारी से httpContext.User = Thread.CurrentPrincipal = principal;
, हो रही है यह सब काम कर रहे हैं (उदा प्रमाणीकरण सर्वर, संसाधन सर्वर, प्रमाण पत्र, आदि की स्थापना) तुच्छ नहीं है। दुर्भाग्य से DotNetOpenAuth साइट पर एक अच्छी मार्गदर्शिका प्रतीत नहीं हुई। यहाँ कुछ अन्य कार्यों आप आप के आगे होगा यदि आप यह तरीका अपनाते हैं है:
- लागू
IAuthorizationServer
- यह DotNetOpenAuth द्वारा प्रदान की अंतरफलक है कि आप पुस्तकालय करने के लिए प्लग और का उपयोग करने की अनुमति देता है उनके ओएथ 2 एक्सेस टोकन जारी करने के लिए कार्यान्वयन। आपको INonceStore
और ICryptoKeyStore
को भी लागू करने की आवश्यकता होगी जिसे मैंने स्टोरेज के लिए एंटीटीफ्रेमवर्क संदर्भ का उपयोग किया था।
- प्रमाण पत्र कॉन्फ़िगर करें -
AuthorizationServer
और ResourceServer
प्रत्येक एक्सेस प्रमाण पत्र एक्सेस टोकन को एन्क्रिप्ट/डिक्रिप्ट करने के लिए उपयोग करते हैं ताकि यह सुनिश्चित हो सके कि वे एक-दूसरे के लिए केवल पहुंच योग्य हैं। मैंने कुछ custom configuration बनाया है, इसलिए मैं इस कॉन्फ़िगरेशन को web.config
फ़ाइलों में अपने प्राधिकरण सर्वर ऐप और मेरी वेब एपीआई सेवाओं (संसाधन सर्वर) में प्रबंधित कर सकता हूं।
- रीफ्रेश टोकन प्रबंधित करें - जब पहले प्राधिकरण सर्वर से एक्सेस टोकन का अनुरोध करते हैं तो आप ओएथ 2 रीफ्रेश टोकन और एक्सेस टोकन दोनों को वापस प्राप्त करेंगे (आपकी कॉन्फ़िगरेशन के आधार पर)। सेवाएं एक्सेस टोकन का उपयोग करती हैं जो अल्पकालिक रहनी चाहिए। रीफ्रेश टोकन का उपयोग अधिक टोकन प्राप्त करने के लिए किया जाता है। ताज़ा टोकन गुप्त रखा जाना चाहिए (जो भी आपके परिदृश्य में है)। मेरे लिए इसका मतलब है कि रीफ्रेश टोकन कभी भी मेरे वेब ऐप में क्लाइंट-साइड जावास्क्रिप्ट से अवगत नहीं होता है।
मुझे आशा है कि आपको ओएथ और .NET वेब एपीआई के साथ कैसे शुरुआत करें, इस बारे में एक उच्च स्तरीय विचार देने में मदद मिलेगी। इन चरणों में से कुछ का प्रदर्शन करने के लिए यहां a blog post है। This SO answer तस्वीर के ग्राहक पक्ष के कुछ और उच्च स्तर के विवरण देता है।
(DotNetOpenAuth ऑनलाइन दस्तावेज़ अभी नीचे दिखाई देते हैं ... उनके लिए कोई लिंक नहीं है; जाहिर है, इसमें happened before है)।
कोई भी मौका आप कुछ स्रोत कोड साझा कर सकते हैं। मैं इसके साथ कुछ घंटों तक खेल रहा हूं और यह थोड़ा सा पिटा है। DotNetOpenAuth दस्तावेज़ इस विशेष उदाहरण में बहुत मदद नहीं करते थे। –