इसके माध्यम से साझा किया गया


अपने पोर्टल के भीतर OAuth 2.0 अस्पष्ट अनुमति प्रवाह का उपयोग करें

नोट

12 अक्टूबर 2022 से प्रभावी, Power Apps पोर्टल Power Pages है। अधिक जानकारी: Microsoft Power Pages अब आम तौर पर उपलब्ध है (ब्लॉग)
हम जल्द ही Power Apps पोर्टल दस्तावेज़ीकरण को Power Pages दस्तावेज़ीकरण के साथ माइग्रेट और विलय करेंगे।

यह सुविधा ग्राहक को बाहरी API में क्लायंट-साइड कॉल करने की अनुमति देती है और उन्हें OAuth अस्पष्ट अनुमति प्रवाह का उपयोग करके सुरक्षित बनाती है. यह सुरक्षित एक्सेस टोकन प्राप्त करने के लिए समाप्ति बिंदु प्रदान करता है. इन टोकन में OAuth 2.0 अंतर्निहित अनुदान प्रवाह के बाद प्रमाणन के लिए बाहरी API द्वारा उपयोग की जाने वाली उपयोगकर्ता पहचान जानकारी शामिल होगी. साइन-इन किए गए उपयोगकर्ता की पहचान की जानकारी बाहरी AJAX कॉल्स को सुरक्षित तरीके से भेजी जाती है, जो डेवलपर्स को प्रमाणीकरण संदर्भ पारित करने में मदद करती है और उपयोगकर्ताओं को उनके APIs को सुरक्षित करने में भी मदद करेगी.

OAuth 2.0 अस्पष्ट अनुमति प्रवाह टोकन समाप्ति बिंदुओं का समर्थन करता है, जिनको कोई क्लायंट ID टोकन प्राप्त करने के लिए कॉल कर सकता है.

कस्टम प्रमाणपत्र

OAuth 2.0 निहित अनुदान प्रवाह के लिए डिफ़ॉल्ट प्रमाण पत्र का उपयोग करना अप्रचलित है. OAuth 2.0 समाप्ति बिंदु का उपयोग करते समय आपको कस्टम प्रमाणपत्र का उपयोग करना होगा. कस्टम प्रमाणपत्र अपलोड करने के लिए Power Platform व्यवस्थापन केंद्र का उपयोग करें. कस्टम प्रमाण पत्र अपलोड करने के बाद, आपको नीचे दी गई साइट सेटिंग्स को अपडेट करना होगा:

  1. पोर्टल सेटिंग्स  पर जाएँ और  साइट सेटिंग्स चुनें.

  2. नई सेटिंग बनाने के लिए,  नया चुनें.

  3. मौजूदा सेटिंग संपादित करने के लिए, ग्रिड में सूचीबद्ध साइट सेटिंग चुनें.

  4. मान निर्दिष्ट करें:

    • नाम: CustomCertificates/ImplicitGrantflow
    • वेबसाइट: संबद्ध वेबसाइट
    • मान: कस्टम प्रमाण पत्र प्रबंधित करें स्क्रीन से अपलोड किए गए कस्टम प्रमाण पत्र के थंबप्रिंट को कॉपी करें और यहां पेस्ट करें. यह मान इंगित करेगा कि निहित अनुदान प्रवाह के लिए किस प्रमाण पत्र का उपयोग किया जाएगा.
  5. सहेजें और बंद करें का चयन करें. निर्दिष्ट मानों के साथ नई साइट सेटिंग्स के लिए सामान्य मेनू.

टोकन समाप्ति बिंदु विवरण

आप /token समाप्ति बिंदु का पोस्ट अनुरोध करके भी एक टोकन प्राप्त कर सकते हैं. टोकन समाप्ति बिंदु के लिए URL यह है: <portal_url>/_services/auth/token. टोकन समाप्ति बिंदु निम्न पैरामीटरों का समर्थन करता है:

पैरामीटर आवश्यक? वर्णन
client_id नहीं एक स्ट्रिंग जो अधिकृत समाप्ति बिंदु को कॉल करते समय पास होती है. आपको सुनिश्चित करना चाहिए कि क्लायंट ID उस पोर्टल के साथ पंजीकृत है. अन्यथा, एक त्रुटि प्रदर्शित होती है. क्लायंट आईडी को aud और appid पैरामीटर के रूप में टोकन में दावों में जोड़ा जाता है और ग्राहकों द्वारा यह सत्यापित करने के लिए इसका उपयोग किया जा सकता है कि लौटाया गया टोकन उनके ऐप के लिए है.
अधिकतम लंबाई 36 वर्ण है. केवल अल्फ़ान्यूमेरिक वर्ण और हाइफ़न समर्थित हैं.
redirect_uri नहीं उस पोर्टल का URL जहाँ प्रमाणीकरण प्रतिक्रियाएँ भेजी और प्राप्त की जा सकती हैं. इसे कॉल में प्रयुक्त निश्चित client_id के लिए पंजीकृत किया जाना चाहिए और बिल्कुल वही मान होना चाहिए, जिसे पंजीकृत किया गया है.
स्थिति नहीं अनुरोध में शामिल मूल्य जो टोकन प्रतिक्रिया में भी परिणाम स्वरूप प्राप्त हुआ है. यह किसी भी सामग्री की एक ऐसी स्ट्रिंग हो सकती है, जिसका आप उपयोग करना चाहते हैं. आमतौर पर, एक बेतरतीब ढंग से जेनरेट किए गए, अद्वितीय मान का उपयोग क्रॉस-साइट-अनुरोध जालसाजी हमलों को रोकने के लिए किया जाता है.
अधिकतम लंबाई 20 वर्ण है.
नॉनस नहीं क्लायंट द्वारा भेजा गया एक स्ट्रिंग मान, जो एक दावे के रूप में परिणामी ID टोकन में शामिल है. फिर क्लायंट इस मान को टोकन रिप्ले हमलों को कम करने के लिए सत्यापित कर सकता है. अधिकतम लंबाई 20 वर्ण है.
response_type No यह पैरामीटर मान के रूप में केवल token का समर्थन करता है, जिससे आपके ऐप को प्राधिकृत समापन बिंदु से दूसरा अनुरोध किए बिना अधिकृत समापन बिंदु से तुरंत एक्सेस टोकन प्राप्त करने की अनुमति मिलती है.

नोट

यद्यपि client_id, redirect_uri, state और nonce पैरामीटर वैकल्पिक हैं, फिर भी यह सुनिश्चित करने के लिए कि आपके एकीकरण सुरक्षित हैं, उनका उपयोग करने की अनुशंसा की जाती है.

सफल प्रतिसाद

टोकन समाप्ति बिंदु परिणाम में स्थिति और प्रतिक्रिया शीर्षलेख के रूप में expires_in और प्रपत्र के मुख्य भाग में टोकन लौटाता है.

त्रुटि प्रतिसाद

टोकन समाप्ति बिंदु में त्रुटि, निम्न मानों के साथ JSON दस्तावेज़ के रूप में प्राप्त होती है:

  • त्रुटि ID: त्रुटि का युनीक आइडेंटिफ़ायर.
  • त्रुटि संदेश: एक विशिष्ट त्रुटि संदेश जो किसी प्रमाणीकरण त्रुटि के मूल कारण की पहचान करने में आपकी मदद कर सकता है.
  • सहसंबंध ID: एक GUID, जिसका उपयोग डीबगिंग उद्देश्यों के लिए किया जाता है. अगर आपने डायग्नोस्टिक लॉगिंग को सक्षम किया है, तो सहसंबंध ID सर्वर त्रुटि लॉग में मौजूद होगी.
  • समय स्टैम्प: दिनांक और समय जब त्रुटि उत्पन्न होती है.

त्रुटि संदेश साइन इन किए हुए उपयोगकर्ता की डिफ़ॉल्ट भाषा में प्रदर्शित किया जाता है. अगर उपयोगकर्ता साइन इन नहीं है, तो साइन-इन पृष्ठ उपयोगकर्ता के लिए साइन इन करने के लिए प्रदर्शित होता है. उदाहरण के लिए, एक त्रुटि प्रतिसाद इस प्रकार दिखाई देता है:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

अधिकृत समाप्ति बिंदु विवरण

नोट

समाप्ति बिंदु अधिकृत करना अप्रचलित है. आईडी टोकन प्राप्त करने के लिए टोकन समाप्ति बिंदु पोस्ट अनुरोध का उपयोग करें.]

समाप्ति बिंदु अधिकृत करने के लिए URL: <portal_url>/_services/auth/authorize. अधिकृत समाप्ति बिंदु निम्न पैरामीटरों का समर्थन करता है:

पैरामीटर आवश्यक? वर्णन
client_id हाँ एक स्ट्रिंग जो अधिकृत समाप्ति बिंदु को कॉल करते समय पास होती है. आपको सुनिश्चित करना चाहिए कि क्लायंट ID उस पोर्टल के साथ पंजीकृत है. अन्यथा, एक त्रुटि प्रदर्शित होती है. क्लायंट आईडी को aud और appid पैरामीटर के रूप में टोकन में दावों में जोड़ा जाता है और ग्राहकों द्वारा यह सत्यापित करने के लिए इसका उपयोग किया जा सकता है कि लौटाया गया टोकन उनके ऐप के लिए है.
अधिकतम लंबाई 36 वर्ण है. केवल अल्फ़ान्यूमेरिक वर्ण और हाइफ़न समर्थित हैं.
redirect_uri हाँ उस पोर्टल का URL जहाँ प्रमाणीकरण प्रतिक्रियाएँ भेजी और प्राप्त की जा सकती हैं. इसे कॉल में प्रयुक्त निश्चित client_id के लिए पंजीकृत किया जाना चाहिए और बिल्कुल वही मान होना चाहिए, जिसे पंजीकृत किया गया है.
स्थिति नहीं अनुरोध में शामिल मूल्य जो टोकन प्रतिक्रिया में भी परिणाम स्वरूप प्राप्त हुआ है. यह किसी भी सामग्री की एक ऐसी स्ट्रिंग हो सकती है, जिसका आप उपयोग करना चाहते हैं. आमतौर पर, एक बेतरतीब ढंग से जेनरेट किए गए, अद्वितीय मान का उपयोग क्रॉस-साइट-अनुरोध जालसाजी हमलों को रोकने के लिए किया जाता है.
अधिकतम लंबाई 20 वर्ण है.
नॉनस नहीं क्लायंट द्वारा भेजा गया एक स्ट्रिंग मान, जो एक दावे के रूप में परिणामी ID टोकन में शामिल है. फिर क्लायंट इस मान को टोकन रिप्ले हमलों को कम करने के लिए सत्यापित कर सकता है. अधिकतम लंबाई 20 वर्ण है.
response_type No यह पैरामीटर मान के रूप में केवल token का समर्थन करता है, जिससे आप ऐप को प्राधिकृत समापन बिंदु से दूसरा अनुरोध किए बिना अधिकृत समापन बिंदु से तुरंत एक्सेस टोकन प्राप्त कर सकते हैं.

सफल प्रतिसाद

अधिकृत समाप्ति बिंदु निम्न मानों को एक फ़्रैगमेंट के रूप में प्रतिसाद URL में परिणाम में दिखाता है:

  • टोकन: टोकन को JSON वेब टोकन (JWT) के रूप में पोर्टल की निजी कुंजी द्वारा डिजिटल रूप से हस्ताक्षरित करके रिटर्न किया जाता है.
  • स्थिति: यदि अनुरोध में एक स्थिति पैरामीटर शामिल किया जाता है, तो प्रतिक्रिया में समान मान दिखाई देना चाहिए. ऐप को सत्यापित करना चाहिए कि अनुरोध और प्रतिक्रिया में स्थिति मान समान हैं.
  • expires_in: वह समयावधि, जिस दौरान पहुँच टोकन मान्य है (सेकंड में).

उदाहरण के लिए, एक सफल प्रतिसाद इस प्रकार दिखाई देता है:

GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier

त्रुटि प्रतिसाद

अधिकृत समाप्ति बिंदु में त्रुटि, निम्न मानों के साथ JSON दस्तावेज़ के रूप में प्राप्त होती है:

  • त्रुटि ID: त्रुटि का युनीक आइडेंटिफ़ायर.
  • त्रुटि संदेश: एक विशिष्ट त्रुटि संदेश जो किसी प्रमाणीकरण त्रुटि के मूल कारण की पहचान करने में आपकी मदद कर सकता है.
  • सहसंबंध ID: एक GUID, जिसका उपयोग डीबगिंग उद्देश्यों के लिए किया जाता है. अगर आपने डायग्नोस्टिक लॉगिंग को सक्षम किया है, तो सहसंबंध ID सर्वर त्रुटि लॉग में मौजूद होगी.
  • समय स्टैम्प: दिनांक और समय जब त्रुटि उत्पन्न होती है.

त्रुटि संदेश साइन इन किए हुए उपयोगकर्ता की डिफ़ॉल्ट भाषा में प्रदर्शित किया जाता है. अगर उपयोगकर्ता साइन इन नहीं है, तो साइन इन पृष्ठ उपयोगकर्ता के लिए साइन इन करने के लिए प्रदर्शित होता है. उदाहरण के लिए, एक त्रुटि प्रतिसाद इस प्रकार दिखाई देता है:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

टोकन ID प्रमाणित करें

बस एक ID टोकन प्राप्त करना उपयोगकर्ता को प्रमाणित करने के लिए पर्याप्त नहीं है; आपको अपने ऐप की आवश्यकताओं के आधार पर टोकन के हस्ताक्षर को भी प्रमाणित करना होगा और टोकन में मौजूद दावों को भी सत्यापित करना होगा. सार्वजनिक टोकन समाप्ति बिंदु पोर्टल की सार्वजनिक कुंजी प्रदान करता है, जिसका उपयोग पोर्टल द्वारा प्रदान किए गए टोकन के हस्ताक्षर को प्रमाणित करने के लिए किया जा सकता है. सार्वजनिक टोकन समाप्ति बिंदु के लिए URL यह है: <portal_url>/_services/auth/publickey.

अस्पष्ट अनुमति प्रवाह चालू या बंद करें

डिफ़ॉल्ट रूप से, अस्पष्ट प्रदान प्रवाह सक्षम किया गया है. अगर आप अस्पष्ट प्रदान प्रवाह बंद करना चाहते हैं, तो कनेक्टर/ImplicitGrantFlowEnabled निम्न के लिए साइट सेटिंग गलत के मान को सेट करें.

अगर आपके पोर्टल में यह साइट सेटिंग उपलब्ध नहीं है, तो आपको उपयुक्त मान वाली कोई नई साइट सेटिंग बनाएँ बनानी होगी.

टोकन मान्यता को कॉन्फ़िगर करें

डिफ़ॉल्ट रूप से, टोकन 15 मिनट के लिए मान्य है. अगर आप टोकन की मान्यता को परिवर्तित करना चाहते हैं, तो ImplicitGrantFlow/TokenExpirationTime साइट सेटिंग के मान को आवश्यक मान में सेट करें. मान सेकंड में निर्दिष्ट होना चाहिए. अधिकतम मान 1 घंटा हो सकता है, और न्यूनतम मान 1 मिनट होना चाहिए. अगर गलत मान निर्दिष्ट है (उदाहरण के लिए, अल्फ़ान्यूमेरिक वर्ण), तो 15 मिनट का डिफ़ॉल्ट मान उपयोग किया जाता है. अगर आप किसी मान को अधिकतम मान से अधिक या न्यूनतम मान से कम निर्दिष्ट करते हैं, तो अधिकतम और न्यूनतम मान क्रमश:, डिफ़ॉल्ट रूप से उपयोग किए जाते हैं.

उदाहरण के लिए, टोकन मान्यता 30 मिनट के लिए सेट करने के लिए, ImplicitGrantFlow/TokenExpirationTime साइट सेटिंग का मान 1800 पर सेट करें. टोकन मान्यता 1 घंटा सेट करने के लिए, ImplicitGrantFlow/TokenExpirationTime साइट सेटिंग का मान 3600 पर सेट करें.

अस्पष्ट प्रदान प्रवाह के लिए क्लाइंट ID पंजीकृत करें.

आपको पोर्टल के साथ उस क्लाइंट ID को पंजीकृत करना चाहिए जिसके लिए प्रवाह की अनुमति है. किसी क्लाइंट ID को पंजीकृत करने के लिए, आपको निम्न साइट सेटिंग्स बनानी चाहिए:

साइट सेटिंग Value
ImplicitGrantFlow/RegisteredClientId इस पोर्टल के लिए अनुमति वाले मान्य क्लाइंट ID मान. मान किसी अर्धविराम से पृथक होने चाहिए और और इसमें अल्फ़ान्यूमेरिक वर्ण और हायफ़न होने चाहिए. अधिकतम लंबाई 36 वर्ण है.
ImplicitGrantFlow/{ClientId}/RedirectUri एक विशिष्ट क्लाइंट ID की अनुमति वाले मान्य रीडायरेक्ट URIs. मान किसी अर्धविराम से पृथक होने चाहिए. प्रदान किया गया URL पोर्टल का कोई मान्य वेब पृष्ठ होना चाहिए.

नमूना कोड

Power Apps पोर्टल API के साथ OAuth 2.0 इंप्लिसिट ग्रांट का उपयोग करके शुरू करने के लिए आप निम्न नमूना कोड का उपयोग कर सकते हैं.

एक बाहरी वेब API के साथ पोर्टल OAuth टोकन का उपयोग करें

यह नमूना एक ASP.NET आधारित परियोजना है और इसका उपयोग Power Apps पोर्टल द्वारा जारी ID टोकन को मान्य करने के लिए किया जाता है. पूरा नमूना यहां पाया जा सकता है: बाहरी वेब API के साथ पोर्टल OAuth टोकन का उपयोग करें.

टोकन समाप्ति बिंदु नमूना

यह नमूना दिखाता है कि आप Power Apps पोर्टल में टोकन समाप्ति बिंदु का उपयोग करके ID टोकन प्राप्त करने के लिए getAuthenticationToken फ़ंक्शन का उपयोग कैसे कर सकते हैं. नमूना यहां पाया जा सकता है: टोकन समाप्ति बिंदु नमूना.

नोट

क्या आप हमें अपनी दस्तावेज़ीकरण भाषा वरीयताओं के बारे में बता सकते हैं? एक छोटा सर्वेक्षण पूरा करें. (कृपया ध्यान दें कि यह सर्वेक्षण अंग्रेज़ी में है)

सर्वेक्षण में लगभग सात मिनट लगेंगे. कोई भी व्यक्तिगत डेटा एकत्र नहीं किया जाता है (गोपनीयता कथन).