6

एज़ूर एपीआई प्रबंधन के साथ उपयोग के लिए, मैं ग्राफ़ एपीआई का उपयोग कर अपने मामले में एप्लिकेशन को एज़ूर एक्टिव डायरेक्टरी (एएडी) प्रोग्रामेटिक रूप से जोड़ने की कोशिश कर रहा हूं।क्लाइंट प्रमाण-पत्र प्रवाह का उपयोग करके Azure AD में प्रोग्रामेटिक रूप से अनुप्रयोगों को जोड़ना

मेरा परिदृश्य निम्न है: वेब एपीआई सुरक्षित करने के लिए मैं एज़ूर एपीआई प्रबंधन के साथ प्रबंधन करना चाहता हूं, मैं प्रमाणीकरण और जेडब्ल्यूटी टोकन जारी करने के बारे में भारी उठाने के लिए एएडी की ओएथ कार्यक्षमता का लाभ उठाना चाहता हूं, और उसके बाद बस Azure API प्रबंधन में सब कुछ सत्यापित करने के लिए मान्य-jwt नीति ठीक है। इसका लाभ यह है कि मैं अपनी बैकएंड सेवा में प्रमाणीकरण को कम या ज्यादा छोड़ सकता हूं।

यह ठीक काम करता है, जब तक कि मैंने उपभोग करने वाले वेब एप्लिकेशन के लिए Azure AD में कोई एप्लिकेशन बनाया है, लेकिन इसे Azure पोर्टल से मैन्युअल रूप से किया जाना है; Azure APIm स्वचालित रूप से ऐसा नहीं करता है।

अब जो मैं स्वचालित रूप से करने के लिए करने की कोशिश कर रहा हूं उसके लिए: मैं एपीआई में एपीआई में कुछ अन्य वेब ऐप लिखने के लिए सदस्यता देना चाहता हूं, और वहां से मैं ग्राफ एपीआई का निर्माण करना चाहता हूं एज़ूर एडी में आवेदन और एपीआई के आवेदन के लिए अनुदान अनुमतियां।

पहली चीज़ जो मैंने करने की कोशिश की थी, वह था कि एज़ूर एडी में विंडोज़ एज़ूर एक्टिव डायरेक्टरी एप्लिकेशन में पूर्ण एप्लिकेशन अनुमतियां हों; यह ग्राफ़ रीस्ट एपीआई का उपयोग कर मेरे एप्लिकेशन को एएडी एक्सेस करने देता है। मैं (login.microsoft.com से) client_credentials अनुदान का उपयोग कर एक पहुंच टोकन प्राप्त करने का प्रबंधन, लेकिन इस टोकन मुझे एक POSThttps://graph.windows.net/(my AAD ID)/applications?api-version=1.5 पर करते हैं नहीं करता है:

{ 
     "odata.error": { 
      "code": "Authorization_RequestDenied", 
      "message": { 
       "lang": "en", 
       "value": "Insufficient privileges to complete the operation." 
      } 
     } 
    } 

मैंने पाया (https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes) है कि भले ही मैं अनुदान Directory.ReadWrite.All अनुमति, एप्लिकेशन (app-केवल) अनुप्रयोग या उसे अपडेट करने के लिए सक्षम नहीं होगा:

नोट: विशेष रूप से बना सकते हैं या ऊपर सूचीबद्ध नहीं संस्थाओं के लिए अद्यतन शामिल नहीं है। इसमें शामिल हैं: आवेदन, Oauth2PermissionGrant, AppRoleAssignment, डिवाइस, ServicePrincipal, TenantDetail, डोमेन, आदि

अगली बात मैंने कोशिश की, संसाधन मालिक पासवर्ड ग्रांट (grant_type=password) किया गया था इसके साथ ही मेरे अपने क्रेडेंशियल्स गुजर, ताकि मैं ग्राफ एपीआई में खुद का प्रतिरूपण कर सकता हूं। अब, applications अंत बिंदु पर सफल हुआ है।

मेरा निचला-पंक्ति प्रश्न यह है: क्या मैं अपने आवेदन के लिए पर्याप्त अनुमतियां दे सकता हूं ताकि मैं क्लाइंट प्रमाण-पत्र प्रवाह का उपयोग करके प्रोग्रामेटिक रूप से एप्लिकेशन जोड़ सकूं, और कोई भी प्रवाह जो उपयोगकर्ता की तरफ से कार्य करता है? और यदि हां, तो यह कैसे किया जाता है?

+0

मैं एक और चर्चा जो सबसे शायद वास्तव में एक ही समस्या करने पर निर्भर करता पाया मेरे पास है: https://social.technet.microsoft.com/Forums/en-US/82ab8a7d- e17b-4e4a-9615-2bdf43f1866a/graph-api-call-return-अपर्याप्त-विशेषाधिकार-से-पूर्ण-ऑपरेशन? फ़ोरम = WindowsAzureAD इसके अतिरिक्त, मुझे वह पृष्ठ भी मिला जहां ग्राफ़ एपीआई अनुमतियों पर चर्चा की गई है: https : //msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes – donmartin

+0

क्या वे आपकी समस्या का समाधान प्रदान करते हैं? – juvchan

+0

नहीं, दुर्भाग्य से नहीं। एक व्यवस्थापक का प्रतिरूपण एकमात्र "समाधान" है जिसे मैंने अभी तक पाया है। – donmartin

उत्तर

3

क्षमा करें डॉन। हमारे पास वर्तमान में क्लाइंट क्रेडेंशियल फ्लो (ऐप-केवल) के लिए कोई अनुमति स्कोप नहीं है जिसका उपयोग अनुप्रयोग या सेवा प्रधानाचार्य बनाने या किसी भी oauth2 अनुमति अनुदान (या निर्देशिका के माध्यम से ऊपर उल्लिखित अन्य संस्थाओं को बनाने के लिए किया जा सकता है) बनाने के लिए किया जा सकता है। ReadWrite.All अनुमति)। हम अतिरिक्त ऐप-केवल अनुमतियों पर काम कर रहे हैं जो आपको इस परिदृश्य को हल्का करने में सक्षम बनाएंगे, लेकिन मेरे पास एक ईटीए नहीं है जो मैं आपको दे सकता हूं।

इस आपरेशन अगर आप एप्लिकेशन + उपयोगकर्ता (कोड प्रवाह) का उपयोग संभव हो जाना चाहिए और एप्लिकेशन Directory.AccessAsUser.All की अनुमति दे - जब तक वहाँ एक उपयोगकर्ता है आपके एप्लिकेशन का उपयोग और वे एक किरायेदार हैं कि व्यवस्थापक।सुनिश्चित नहीं है कि यह आपके लिए स्वीकार्य कामकाज है (और मुझे लगता है कि आप पासवर्ड प्रवाह के साथ क्या उपयोग कर रहे हैं - हालांकि मैं आपको कोड प्रवाह का उपयोग करने की सलाह दूंगा)।

अद्यतन: एएडी ग्राफ के लिए हमने कुछ नए ऐप केवल अनुमतियां जोड़े हैं। Application.ReadWrite.OwnedBy (जो किसी ऐप को अन्य ऐप बनाने/बनाने की अनुमति देता है - लेकिन केवल उसके द्वारा बनाए गए ऐप्स को अपडेट करें - यह किसी भी अन्य ऐप्स को स्पर्श करने में सक्षम नहीं होगा) और एप्लिकेशन। ReadWrite.All (जो एक ऐप को किरायेदार में सभी ऐप्स बनाने/प्रबंधित करने की अनुमति देता है)। ऐसा लगता है कि पहले एक उपयुक्त होगा। आप एएडी ग्राफ संसाधन के लिए Azure पोर्टल में इन शो को देखना चाहिए। हालांकि वे वर्तमान में AFAIK दस्तावेज नहीं हैं।

आशा इस मदद करता है,

+0

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

+0

तो क्लाइंट क्रेडेंशियल सामान्य काम में प्रवाह करता है? – Gobliins

+0

नहीं। यह नहीं है। संसाधन मालिक पासवर्ड अनुदान करता है। – donmartin

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