Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
Apigee X के दस्तावेज़ पर जाएं. info
ऑथराइज़ेशन कोड, OAuth 2.0 के सबसे ज़्यादा इस्तेमाल किए जाने वाले ग्रांट टाइप में से एक है. ऑथराइज़ेशन कोड फ़्लो, "थ्री-लेग्ड OAuth" कॉन्फ़िगरेशन होता है. इस कॉन्फ़िगरेशन में, उपयोगकर्ता संसाधन सर्वर के साथ खुद को प्रमाणित करता है. साथ ही, क्लाइंट ऐप्लिकेशन को उपयोगकर्ता नाम/पासवर्ड बताए बिना, ऐप्लिकेशन को अपनी सुरक्षित की गई सुविधाओं को ऐक्सेस करने की अनुमति देता है.
इस विषय के बारे में जानकारी
इस विषय में, OAuth 2.0 ऑथराइज़ेशन ग्रांट टाइप फ़्लो के बारे में सामान्य जानकारी दी गई है. साथ ही, Apigee Edge पर इस फ़्लो को लागू करने का तरीका बताया गया है.
वीडियो
अपने एपीआई को सुरक्षित रखने के लिए, OAuth 2.0 ऑथराइज़ेशन ग्रांट टाइप का इस्तेमाल करने का तरीका जानने के लिए, यह छोटा वीडियो देखें.
उपयोग के उदाहरण
इस तरह का ग्रांट, उन ऐप्लिकेशन के लिए होता है जिन्हें तीसरे पक्ष के ऐसे डेवलपर ने बनाया है जिनका एपीआई देने वाली कंपनी के साथ भरोसेमंद कारोबारी संबंध नहीं है. उदाहरण के लिए, सार्वजनिक एपीआई प्रोग्राम के लिए रजिस्टर करने वाले डेवलपर पर आम तौर पर भरोसा नहीं किया जाना चाहिए. इस तरह के ग्रांट टाइप में, संसाधन सर्वर पर मौजूद उपयोगकर्ता के क्रेडेंशियल को ऐप्लिकेशन के साथ कभी शेयर नहीं किया जाता.
कोड सैंपल
आपको Apigee Edge पर, ऑथराइज़ेशन कोड ग्रांट टाइप को लागू करने का पूरा और काम करने वाला सैंपल, GitHub पर मौजूद api-platform-samples रिपो में मिल सकता है. api-platform-samples/sample-proxies डायरेक्ट्री में, oauth-advanced
sample देखें. सैंपल के बारे में ज़्यादा जानकारी के लिए,
README फ़ाइल देखें.
फ़्लो डायग्राम
इस फ़्लो डायग्राम में, Apigee Edge को ऑथराइज़ेशन सर्वर के तौर पर इस्तेमाल करके, ऑथराइज़ेशन कोड OAuth फ़्लो दिखाया गया है.
अहम जानकारी: इस डायग्राम को बड़ा करके देखने के लिए, इस पर राइट क्लिक करें और इसे नए टैब में खोलें. इसके अलावा, इसे सेव करके इमेज व्यूअर में भी खोला जा सकता है.
.png?hl=hi)
ऑथराइज़ेशन कोड फ़्लो में शामिल चरण
यहां ऑथराइज़ेशन कोड ग्रांट टाइप को लागू करने के लिए ज़रूरी चरणों की खास जानकारी दी गई है. इसमें Apigee Edge, ऑथराइज़ेशन सर्वर के तौर पर काम करता है. ध्यान रखें कि इस फ़्लो में सबसे अहम बात यह है कि क्लाइंट को संसाधन सर्वर पर उपयोगकर्ता के क्रेडेंशियल कभी नहीं दिखते.
ज़रूरी शर्त: क्लाइंट आईडी और क्लाइंट सीक्रेट कुंजियां पाने के लिए, क्लाइंट ऐप्लिकेशन को Apigee Edge के साथ रजिस्टर करना होगा. ज़्यादा जानकारी के लिए, क्लाइंट ऐप्लिकेशन रजिस्टर करना लेख पढ़ें.
1. उपयोगकर्ता ने फ़्लो शुरू किया
जब ऐप्लिकेशन को किसी संसाधन सर्वर से उपयोगकर्ता के सुरक्षित संसाधनों को ऐक्सेस करने की ज़रूरत होती है (उदाहरण के लिए, सोशल मीडिया साइट पर मौजूद संपर्क सूची), तो वह Apigee Edge को एक एपीआई कॉल भेजता है. Apigee Edge, क्लाइंट के आईडी की पुष्टि करता है. अगर आईडी मान्य होता है, तो वह उपयोगकर्ता के ब्राउज़र को लॉगिन पेज पर रीडायरेक्ट कर देता है. यहां उपयोगकर्ता अपने क्रेडेंशियल डालेगा. एपीआई कॉल में, क्लाइंट ऐप्लिकेशन को रजिस्टर करते समय मिली जानकारी शामिल होती है: क्लाइंट आईडी और रीडायरेक्ट यूआरआई.
2. उपयोगकर्ता क्रेडेंशियल डालता है
अब उपयोगकर्ता को लॉगिन पेज दिखता है, जहां उसे अपने लॉगिन क्रेडेंशियल डालने के लिए कहा जाता है. अगर लॉगिन हो जाता है, तो हम अगले चरण पर जाते हैं.

3. उपयोगकर्ता सहमति देता है
इस चरण में, उपयोगकर्ता ऐप्लिकेशन को अपने संसाधनों को ऐक्सेस करने की सहमति देता है. सहमति फ़ॉर्म में आम तौर पर, स्कोप चुनने के विकल्प शामिल होते हैं. इनकी मदद से उपयोगकर्ता यह चुन सकता है कि ऐप्लिकेशन को रिसॉर्स सर्वर पर क्या-क्या करने की अनुमति है. उदाहरण के लिए, उपयोगकर्ता सिर्फ़ पढ़ने की अनुमति दे सकता है या ऐप्लिकेशन को संसाधनों को अपडेट करने की अनुमति दे सकता है.

4. लॉगिन ऐप्लिकेशन, Apigee Edge को अनुरोध भेजता है
अगर लॉगिन और सहमति देने की प्रोसेस पूरी हो जाती है, तो लॉगिन ऐप्लिकेशन, Apigee Edge के /authorizationcode एंडपॉइंट पर डेटा पोस्ट करता है. इस डेटा में रीडायरेक्ट यूआरआई, क्लाइंट आईडी, स्कोप, उपयोगकर्ता की कोई ऐसी जानकारी शामिल होती है जिसे शामिल करना है. साथ ही, इसमें यह भी बताया जाता है कि लॉगिन हो गया है.
5. Apigee Edge एक ऑथराइज़ेशन कोड जनरेट करता है
जब Edge को लॉगिन ऐप्लिकेशन से /authorizationcode एंडपॉइंट पर POST अनुरोध मिलता है, तो दो काम होते हैं. सबसे पहले, Edge यह तय करता है कि लॉग इन हो गया है. इसके लिए, वह अनुरोध के पैरामीटर या हेडर में, प्रोसेस पूरी होने की जानकारी देने वाले इंडिकेटर की जांच करता है. इसके बाद, Edge यह जांच करता है कि लॉगिन ऐप्लिकेशन से भेजा गया रीडायरेक्ट यूआरआई, उस रीडायरेक्ट यूआरआई से मेल खाता हो जो Apigee Edge के साथ ऐप्लिकेशन रजिस्टर करते समय दिया गया था. अगर सब कुछ ठीक है, तो Edge एक अनुमति कोड जनरेट करता है.
{redirect_uri}?code={authorization_code}&state={some_string}6. क्लाइंट, ऑथराइज़ेशन कोड वापस पाता है और Edge से ऐक्सेस टोकन का अनुरोध करता है
अब मान्य ऑथराइज़ेशन कोड की मदद से क्लाइंट, Edge से ऐक्सेस टोकन का अनुरोध कर सकता है. इसके लिए, यह क्लाइंट आईडी और क्लाइंट सीक्रेट कुंजियों (Edge पर ऐप्लिकेशन रजिस्टर करते समय मिली थीं), ऑथराइज़ेशन कोड, अनुमति का टाइप, और स्कोप को POST करता है. क्लाइंट आईडी और सीक्रेट कुंजियां शामिल करने से, Apigee Edge यह पुष्टि कर सकता है कि क्लाइंट ऐप्लिकेशन वही है जिसे रजिस्टर किया गया था. उदाहरण के लिए:
$ curl https://{org_name}-test.apigee.net/my_oauth_proxy/accesstoken?code=Xyz123&grant_type=authorization_code -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpKNhGar6K&client_secret=hAr4GngA9vAyvI4'
7. क्लाइंट को ऐक्सेस टोकन मिलता है
अगर सब कुछ ठीक रहता है, तो Edge क्लाइंट को ऐक्सेस टोकन वापस भेजता है. ऐक्सेस टोकन की समयसीमा खत्म हो जाएगी. साथ ही, यह सिर्फ़ उस स्कोप के लिए मान्य होगा जिसे उपयोगकर्ता ने ऐप्लिकेशन को अपने संसाधनों को ऐक्सेस करने की सहमति देते समय तय किया था.
8. क्लाइंट, Protected API को कॉल करता है
अब मान्य ऐक्सेस टोकन की मदद से, क्लाइंट सुरक्षित किए गए एपीआई को कॉल कर सकता है. इस सिनारियो में, Apigee Edge (प्रॉक्सी) से अनुरोध किए जाते हैं. Edge की यह ज़िम्मेदारी होती है कि वह टारगेट रिसोर्स सर्वर को एपीआई कॉल पास करने से पहले, ऐक्सेस टोकन की पुष्टि करे. ऐक्सेस टोकन, Authorization हेडर में पास किए जाते हैं. उदाहरण के लिए:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
फ़्लो और नीतियां कॉन्फ़िगर करना
ऑथराइज़ेशन सर्वर के तौर पर Edge को कई OAuth अनुरोधों को प्रोसेस करना होता है. जैसे, ऐक्सेस टोकन, ऑथराइज़ेशन कोड, रीफ़्रेश टोकन, लॉगिन पेज रीडायरेक्ट वगैरह. इन एंडपॉइंट को कॉन्फ़िगर करने के लिए, ये दो बुनियादी चरण पूरे करने होते हैं:
- कस्टम फ़्लो बनाना
- OAuthV2 नीतियां जोड़ना और कॉन्फ़िगर करना
कस्टम फ़्लो कॉन्फ़िगरेशन
आम तौर पर, इस तरह के फ़्लो को कॉन्फ़िगर किया जाता है, ताकि फ़्लो के हर चरण या "लेग" को Apigee Edge प्रॉक्सी में मौजूद फ़्लो से तय किया जा सके. हर फ़्लो में एक एंडपॉइंट और एक नीति होती है. यह नीति, OAuth से जुड़ा ज़रूरी टास्क पूरा करती है. जैसे, अनुमति देने वाला कोड या ऐक्सेस टोकन जनरेट करना. उदाहरण के लिए, यहां दिए गए एक्सएमएल में दिखाया गया है कि /oauth/authorizationcode एंडपॉइंट से जुड़ी एक नीति है, जिसे GenerateAuthCode कहा जाता है. यह OAuthV2 नीति है, जिसमें GenerateAuthorizationCode ऑपरेशन के बारे में बताया गया है.
फ़्लो कॉन्फ़िगरेशन दिखाने का सबसे आसान तरीका, एक्सएमएल का उदाहरण देना है. हर फ़्लो के बारे में जानकारी पाने के लिए, इन-लाइन टिप्पणियां देखें. यह एक उदाहरण है. फ़्लो और पाथ के नाम अपनी पसंद के मुताबिक कॉन्फ़िगर किए जा सकते हैं. इस तरह का कस्टम फ़्लो बनाने के लिए ज़रूरी चरणों के बारे में खास जानकारी पाने के लिए, OAuth एंडपॉइंट और नीतियां कॉन्फ़िगर करना लेख भी पढ़ें.
GitHub पर उदाहरण के तौर पर लागू करने का तरीका भी देखें.
<Flows>
<Flow name="RedirectToLoginApp">
<!--
Publish this URI to developers to use for their 'login' link
-->
<Condition>proxy.pathsuffix == "/oauth/authorize"</Condition>
<Request>
<Step><Name>RedirectToLoginPage</Name></Step>
</Request>
</Flow>
<Flow name="GetAuthCode">
<!--
Call this URL from your Login app after you authenticate the user.
The policy will automatically return the auth code in the response to the
redirect_uri registered by the calling app
-->
<Condition>proxy.pathsuffix == "/oauth/authorizationcode"</Condition>
<Request>
<Step><Name>GenerateAuthCode</Name></Step>
</Request>
</Flow>
<Flow name="GetAccessToken">
<!-- This policy flow is triggered when the URI path suffix
matches /oauth/accesstoken. Publish this URL to app developers
to use when obtaining an access token using an auth code
-->
<Condition>proxy.pathsuffix == "/oauth/accesstoken"</Condition>
<Request>
<Step><Name>GenerateAccessToken</Name></Step>
</Request>
</Flow>
</Flows>
नीतियों के साथ फ़्लो कॉन्फ़िगर करना
हर एंडपॉइंट से एक नीति जुड़ी होती है. आइए, नीतियों के उदाहरण देखते हैं. प्रॉक्सी एंडपॉइंट में OAuthV2 नीतियां जोड़ने के लिए ज़रूरी चरणों की खास जानकारी पाने के लिए, OAuth एंडपॉइंट और नीतियां कॉन्फ़िगर करना लेख भी पढ़ें.
लॉगिन रीडायरेक्ट
यह /oauth/authorize पाथ है. अटैच की गई नीति, उपयोगकर्ता को लॉगिन ऐप्लिकेशन पर रीडायरेक्ट करती है. यहां असली उपयोगकर्ता सुरक्षित तरीके से पुष्टि कर सकता है और क्लाइंट ऐप्लिकेशन को अपनी सुरक्षित की गई संसाधनों को ऐक्सेस करने की अनुमति दे सकता है. इसके लिए, उसे क्लाइंट ऐप्लिकेशन को अपना उपयोगकर्ता नाम और पासवर्ड बताने की ज़रूरत नहीं होती. इसे सेवा कॉलआउट नीति, JavaScript, Node.js या अन्य तरीकों से पूरा किया जा सकता है.
अनुरोध करने के लिए एपीआई कॉल, GET है. इसके लिए, क्वेरी पैरामीटर client_id, response_type, redirect_uri, scope, और state की ज़रूरत होती है.
$ curl http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code&redirect_uri={redirect_uri}&scope=scope1%20scope2&state={some_string}
ऑथराइज़ेशन कोड पाना
यह /oauth/authorizationcode पाथ है. इसमें GenerateAuthorizationCode ऑपरेशन के साथ OAuthV2 नीति का इस्तेमाल किया जाता है.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GetAuthCode">
<DisplayName>GetAuthCode</DisplayName>
<Operation>GenerateAuthorizationCode</Operation>
<ExpiresIn>600000</ExpiresIn>
<GenerateResponse/>
</OAuthV2>अनुमति कोड पाने के लिए एपीआई कॉल, POST होता है. इसके लिए, अनुरोध के मुख्य हिस्से में फ़ॉर्म पैरामीटर के तौर पर client_id, response_type, redirect_uri, और वैकल्पिक तौर पर scope और state को पास करना ज़रूरी होता है. जैसा कि इस उदाहरण में दिखाया गया है:
$ curl http://myorg-test.apigee.net/oauth/authorizationcode -X POST -d 'client_id={consumer_key}&response_type=code&redirect_uri={redirect_uri}&scope=scope1%20scope2&state={some_string}'
ऐक्सेस टोकन पाना
यह नीति, /oauth/accesstoken पाथ से जुड़ी है. यह OAuthV2 नीति का इस्तेमाल करता है. इसमें GenerateAccessToken ऑपरेशन के बारे में बताया गया है. इस मामले में, grant_type पैरामीटर को क्वेरी पैरामीटर के तौर पर इस्तेमाल किया जाना चाहिए:
<OAuthV2 name="GetAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>360000000</ExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
ऐक्सेस टोकन पाने के लिए एपीआई कॉल, POST होता है. इसमें अनुमति कोड, client_id, client_secret, grant_type=authorization_code, और स्कोप शामिल होना चाहिए. स्कोप को शामिल करना ज़रूरी नहीं है. उदाहरण के लिए:
$ curl https://{org_name}-test.apigee.net/oauth/accesstoken?grant_type=authorization_code -X POST -d 'code={authorization_code}&client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'
यह सिर्फ़ एक सामान्य जवाब है. प्रोडक्शन के उदाहरण में, यूआरएल बनाने, ट्रांसफ़ॉर्मेशन करने, और अन्य टास्क पूरे करने के लिए कई अन्य नीतियां शामिल हैं. पूरे और काम करने वाले प्रोजेक्ट के लिए, GitHub पर मौजूद सैंपल देखें.
ऐक्सेस टोकन की पुष्टि करने से जुड़ी नीति अटैच करना
सुरक्षित किए गए किसी एपीआई को ऐक्सेस करने वाले फ़्लो की शुरुआत में, VerifyAccessToken नीति (VerifyAccessToken ऑपरेशन के बारे में जानकारी देने वाली OAuthV2 नीति) अटैच करें. इससे, सुरक्षित किए गए संसाधनों के लिए कोई अनुरोध मिलने पर, यह नीति लागू हो जाएगी. Edge, यह पक्का करने के लिए जांच करता है कि हर अनुरोध में मान्य ऐक्सेस टोकन मौजूद हो. अगर ऐसा नहीं होता है, तो गड़बड़ी का मैसेज दिखता है. बुनियादी चरणों के लिए, ऐक्सेस टोकन की पुष्टि करना लेख पढ़ें.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken">
<DisplayName>VerifyAccessToken</DisplayName>
<ExternalAuthorization>false</ExternalAuthorization>
<Operation>VerifyAccessToken</Operation>
<SupportedGrantTypes/>
<GenerateResponse enabled="true"/>
<Tokens/>
</OAuthV2>Protected API को कॉल करना
OAuth 2.0 की सुरक्षा से सुरक्षित किसी एपीआई को कॉल करने के लिए, आपको मान्य ऐक्सेस टोकन देना होगा. टोकन को Authorization हेडर में शामिल करने का सही तरीका यह है: ध्यान दें कि ऐक्सेस टोकन को "बेयरर टोकन" भी कहा जाता है.
$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \ http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282
ऐक्सेस टोकन भेजना भी देखें.