2016-09-29 14 views
14

का उपयोग कर आरईएसटी एपीआई के लिए प्राधिकरण विधि निम्नलिखित आवश्यकताओं के साथ एक आरईएसटी वेब एपीआई सुरक्षित करने का सबसे अच्छा तरीका क्या है। एएसपीनेट में लागू आरईएसटी एपीआई के साथ सिस्टम में एक कोणीय जेएस फ्रंटेंड है।सक्रिय निर्देशिका

  • सिस्टम में दो "भूमिकाएं" हैं, उपयोगकर्ताओं में भूमिकाओं में से एक होगा। एक भूमिका को कुछ एपीआई तक पहुंचने की अनुमति देनी चाहिए (इसे "VIEW" कहें), अन्य भूमिका अन्य एपीआई तक पहुंच की अनुमति देती है
  • सभी उपयोगकर्ता सक्रिय निर्देशिका में हैं, इसलिए यदि मेरे पास उपयोगकर्ता नाम है, तो मैं देख सकता हूं कि वे किस भूमिका में हैं - कुछ ग्राहक विंडोज़ बॉक्स पर हैं, अन्य लिनक्स
  • पर हैं, मैं सत्र जारी रखना चाहता हूं इसलिए मुझे प्रत्येक एपीआई कॉल
  • के लिए एडी देखने की ज़रूरत नहीं है, मुझे एक ही साइन ऑन करना होगा। विंडोज मशीनों पर, मुझे उन्हें उपयोगकर्ता दर्ज करने और पास करने की आवश्यकता नहीं है क्योंकि मैं पहले ही विंडोज प्रमाणीकरण का उपयोग कर अपना उपयोगकर्ता नाम पुनर्प्राप्त कर सकता हूं।

मेरा मानना ​​है कि ओथ मेरा सबसे अच्छा विकल्प होगा।

+0

क्या आप उल्लेख कर सकते हैं कि आप किस तरह के विवरण की उम्मीद करते हैं? – Stephane

उत्तर

7

सिस्टम में दो "भूमिकाएं" हैं, उपयोगकर्ताओं की भूमिकाओं में से एक होगी। एक भूमिका कुछ API (यह "देखें" कहते हैं) के लिए उपयोग की अनुमति देता है चाहिए, अन्य भूमिका अन्य API तक पहुंच

  • भूमिका आधारित प्रमाणीकरण के लिए, आप उपयोग कर सकते हैं [अधिकृत ("भूमिका" = "की अनुमति देता है प्रबंधक ")]। टोकन पहचान सर्वर द्वारा प्रदान किया जाएगा और दावा के रूप में दावा होगा।

सभी उपयोगकर्ताओं को सक्रिय निर्देशिका में हैं, इसलिए अगर मैं एक उपयोगकर्ता नाम है, मैं कर सकते हैं जांच वे क्या भूमिका in- हैं कुछ क्लाइंट विंडोज बक्से पर कर रहे हैं, दूसरों लिनक्स

पर हैं
  • यदि आपके पास एडीएफएस है तो आपके पास एक पहचान सर्वर हो सकता है जो एडीएफएस पर भरोसा करता है। एडीएफएस एक टोकन प्रदान करेगा जिसमें भूमिका के लिए दावा होगा और आपका पहचान सर्वर दावा परिवर्तन करेगा और उसी रोल दावे को कोणीय ऐप पर वापस कर देगा।

मैं सत्र लागू करने के लिए तो मैं ऊपर हर API कॉल

  • टोकन का अनुरोध करने के लिए ई देखने के लिए थोड़ी देर के लिए इस की जरूरत नहीं है चाहते हैं, तो आपको ऑफ़लाइन लिए पूछ सकते हैं दायरा इसलिए पहचान सर्वर Refresh TokenAccess Token के साथ प्रदान करेगा ताकि आपको बार-बार एडी के लिए पूछने की आवश्यकता न हो।

मुझे एकल साइन ऑन करना होगा। विंडोज मशीनों पर, मुझे की आवश्यकता नहीं है ताकि वे उपयोगकर्ता दर्ज कर सकें और पास कर सकें क्योंकि मैं विंडोज प्रमाणीकरण का उपयोग कर अपना उपयोगकर्ता नाम पुनर्प्राप्त कर सकता हूं।

  • इस एक के लिए, आप अपनी पहचान Sever विश्वास Windows प्रमाणीकरण के लिए WSFederation हो सकता है।

तो मूल रूप से आपको पहचान सर्वर सेट अप करने की आवश्यकता है जो आपको टोकन प्रदान करेगा और आरईएसटी एपीआई उपयोगकर्ता को सही जानकारी वापस करने के दावों को सत्यापित करने के लिए उस टोकन का उपयोग करेगा।

3

मुझे यकीन नहीं है कि आप वास्तव में क्या उम्मीद करते हैं। वैसे भी, पहले मैं अपने प्रश्न आवश्यकताओं के साथ धूमिल कर रहा हूँ:

  • आप खातों और भूमिका सक्रिय निर्देशिका में हैं
  • आप एक सक्रिय निर्देशिका समूह पर आधारित भूमिकाओं प्रबंधन करना चाहते
  • आप किसी को चाहते हैं जो कुछ भी प्रणाली (विंडोज़, लिनक्स, मैक, मोबाइल ...) एक ही प्रमाणीकरण का उपयोग कर अपने आवेदन पर कनेक्ट करने के लिए
  • आप अपने एडी को लगातार हिट करने के लिए नहीं चाहते हैं (उदाहरण के लिए किसी भी कॉल पर नहीं)
  • यदि उपयोगकर्ता कनेक्ट है प्रमाणीकरण प्रणाली का उपयोग करने वाले अनुप्रयोग पर, वह नहीं है ई इसे एक और अनुप्रयोग पर फिर से करने के लिए जो एक ही प्रमाणीकरण प्रणाली का उपयोग करता है

यदि ये आवश्यकताएं आपकी हैं। मेरा मानना ​​है कि ओएथ का उपयोग करने के लिए एकमात्र मानक (और साफ) समाधान है। मैं ओएथ के विस्तृत विवरण में नहीं जा रहा हूं, लेकिन यह प्रमाणीकरण प्रोटोकॉल नेट पर सबसे मानक है (फेसबुक, गूगल, ट्विटर ...)। बेशक आप अपने व्यावसायिक अनुप्रयोगों में फेसबुक, गूगल या ट्विटर खाते का उपयोग नहीं करना चाहते हैं, लेकिन आपकी सक्रिय निर्देशिका खाते आपको अपने सक्रिय सक्रिय निर्देशिका सर्वर के खातों का उपयोग करके अपने ओथ पहचान प्रदाता को स्थापित/सेटअप/विकसित करना होगा। आपकी पसंद को आप कितना अच्छा ADFS प्रोटोकॉल और इसके विभिन्न प्रवाह (कोड, निहित, assersion) आप इसके लिए दो समाधान है पता पर निर्भर करेगा:

  • उपयोग ADFS: ADFS स्थापित करें; यह एक ओथ पोर्टल प्रदान करता है जो एएसपीनेट एमवीसी के साथ बॉक्स से बाहर काम करेगा। यह ओएथ के कोड प्रवाह का उपयोग करता है जो एडीएफएस द्वारा समर्थित एकमात्र ओएथ प्रवाह है। भूमिकाओं और इसके संबंधित एडी समूहों के लिए, आपको एडी समूहों के साथ भूमिका दावों को मैप करना होगा। (यह adfs के सेटअप में है, आपको नेट पर कई ट्यूट मिलेगा)। एएसएफनेट एमवीसी/एएसपीनेट वेबपीआई के साथ एडीएफएस का उपयोग करने के तरीके के बारे में आपको बहुत सारे टूल मिलेंगे। मैं यहां नेट का उल्लेख करता हूं, लेकिन प्रत्येक तकनीक में ओथ प्रमाणीकरण (नोडजेएस/एक्सप्रेस, पीएचपी, जावा ...) के लिए एक कार्यान्वयन है।
  • Thinktecture पहचान सर्वर (.net प्रौद्योगिकी) का उपयोग करें। यह कम से कम प्रयास के साथ एक कस्टम पहचान सर्वर को लागू करने के लिए सभी नींव प्रदान करेगा: http://www.thinktecture.com/identityserver/https://github.com/IdentityServer/IdentityServer3। इसमें सक्रिय निर्देशिका में अपने खातों को प्लग करने के लिए एक एडिन शामिल है। इसके साथ, आप निहित और दावा प्रवाह का उपयोग कर सकते हैं।
  • oauth2orize (नोडजेज़ के लिए) का उपयोग करें: https://www.npmjs.com/package/oauth2orize। यह आपको थिंकटेक्चर पहचान सर्वर से लेकिन नोडजेस में समान बनाने की अनुमति देगा। स्पष्ट रूप से आपको मैन्युअल रूप से विज्ञापन के साथ सभी तारों को बनाना होगा। इसके साथ, आप निहित प्रवाह का उपयोग कर सकते हैं (दावा प्रवाह के बारे में निश्चित नहीं है)।

आवेदन पक्ष पर, अधिकांश ढांचे ओएथ का उपयोग करके कई मौजूदा ढांचे के साथ आसानी से प्रमाणीकृत कर सकते हैं। उदाहरण के लिए, यदि आप एक पृष्ठ पृष्ठ बनाते हैं, तो आप कोणीय के लिए adal.js या adal.js का उपयोग कर सकते हैं यदि आप कोणीय का उपयोग करते हैं। जैसा कि मैंने उपर्युक्त उल्लेख किया है, यह सब बॉक्स के बाहर एएसपीएनटी एमवीसी/वेबपीआई द्वारा बदला जाता है लेकिन मुझे पता है कि यह अन्य सर्वर प्रौद्योगिकियों के मामले में है। यदि आपके पास और प्रश्न हैं, तो संकोच न करें क्योंकि मुझे यकीन नहीं है कि आप वास्तव में क्या उम्मीद करते हैं।

+1

इस पोस्ट के लिए मामूली अतिरिक्त। एडीएफएस 2016 (या 4.0) पूर्ण ओएथ/ओपनआईडी कनेक्ट कनेक्ट का समर्थन करता है और मध्यस्थ में मुख्य रूप से पहचान सर्वर के बिना काम कर सकता है। –

+0

@ सैमुएल डीएमएसएफटी वास्तव में आप सही हैं, मैं यह विवरण भूल गया। Robben_Ford_Fan_boy के लिए इसे स्पष्ट करने के लिए, यदि आप एडीएफएस 4.0 स्थापित करते हैं, तो मामूली मामलों के लिए थिंकटेक्चर पहचान सर्वर आवश्यक नहीं है। यह अभी भी बेहद सहायक होगा हालांकि यदि आप अपने प्रमाणीकरण और प्रमाणीकरण में कुछ घर का बना अनुकूलन करना चाहते हैं, खासकर यदि आप अपने टोकन को कुछ और दावों के साथ अनुकूलित करना चाहते हैं (यह कभी-कभी कनेक्टेड उपयोगकर्ता के बारे में अधिक जानकारी के लिए उपयोगी हो सकता है)। – Stephane

+0

क्या आप मुझे अतिरिक्त अनुकूलन पर अधिक जानकारी दे सकते हैं जिन्हें आप ढूंढ रहे हैं? –

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