2013-07-15 6 views
15

मेरे पास एक वेब एपीआई एप्लिकेशन है और मुझे पता चला है कि ओएथ एपीआई के लिए मानक सुरक्षा मॉडल होगा जहां प्रमाणीकरण सर्वर प्रमाणीकरण टोकन उत्पन्न करने के लिए ज़िम्मेदार हो जाएगा ताकि उपयोगकर्ता हमारे सर्वर को भेज सके और सेवाओं का उपभोग कर सके।वेब एपीआई एप्लिकेशन को सुरक्षित करने के लिए ओएथ के साथ कैसे शुरुआत करें?

मैं बहुत ही इस के लिए नया हूँ, लेकिन मैं समझता हूँ कि भूमिकाओं शामिल:

  • संसाधन मालिक
  • ग्राहक
  • संसाधन सर्वर
  • प्राधिकरण सर्वर

लेकिन OAuth क्या है वास्तव में अभ्यास में, सिद्धांत में नहीं? क्या यह एक .NET पुस्तकालय है? क्या यह एक अलग कंपनी द्वारा प्रदान की जाने वाली सेवा है? क्या यह कुछ है जो मैं अपनी स्थानीय विकास मशीन पर कॉन्फ़िगर कर सकता हूं और देख सकता हूं कि यह कैसे काम करता है?

वेब एपीआई एप्लिकेशन को सुरक्षित करने के लिए ओएथ के साथ कैसे शुरुआत करें?

उत्तर

17

ओएथ एक प्रोटोकॉल है; वर्तमान संस्करण OAuth 2.0 है। आपके प्रश्न के लिए, यह लिंक विभिन्न तकनीकों में प्रोटोकॉल के कई कार्यान्वयन सूचीबद्ध करता है। .NET वेब एपीआई के उपयोग के लिए आपको शायद DotNetOpenAuth में दिलचस्पी है जो ओएथ 1 और ओएथ 2 दोनों के कार्यान्वयन प्रदान करता है।

मैं एक ऐप में DotNetOpenAuth का उपयोग कर रहा हूं जिसे मैं अभी .NET वेब सुरक्षित करने के लिए काम कर रहा हूं एपीआई। मुझे OAuth2Handler मिल गया है जो DelegatingHandler बढ़ाता है जो आने वाले अनुरोध किसी भी नियंत्रक तक पहुंचने से पहले वेब एपीआई पाइपलाइन में डाला जाता है। OAuth2Handler निम्नलिखित है:

  1. को दर्शाता है एक DotNetOpenAuth ResourceServer
  2. कॉल ResourceServer.GetPrincipal() जो पढ़ता है और एक पहुँच टोकन (AuthorizationServer द्वारा अन्यत्र जारी decrypts और एक OAuthPrincipal (मेरे मामले में मैं पढ़ रहा हूँ अतिरिक्त डेटा देता है कि DotNetOpenAuth कार्यान्वयन आपको ClaimsPrincipal को पास करने और बनाने की अनुमति देता है।)
  3. 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 है)।

+0

कोई भी मौका आप कुछ स्रोत कोड साझा कर सकते हैं। मैं इसके साथ कुछ घंटों तक खेल रहा हूं और यह थोड़ा सा पिटा है। DotNetOpenAuth दस्तावेज़ इस विशेष उदाहरण में बहुत मदद नहीं करते थे। –

संबंधित मुद्दे