ऑथराइज़ेशन कोड के ऐक्सेस का टाइप लागू करना

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

ऑथराइज़ेशन कोड, OAuth 2.0 के सबसे ज़्यादा इस्तेमाल किए जाने वाले अनुदान टाइप में से एक है. अनुमति कोड फ़्लो एक "तीन पैरों वाला OAuth" है कॉन्फ़िगरेशन. इस कॉन्फ़िगरेशन में, उपयोगकर्ता पुष्टि करता है वह खुद संसाधन सर्वर के साथ काम करता है और ऐप्लिकेशन को उनके सुरक्षित संसाधनों को ऐक्सेस करने की सहमति देता है वह भी उपयोगकर्ता नाम/पासवर्ड के बारे में बताए बिना.

इस विषय के बारे में जानकारी

इस विषय में, OAuth 2.0 अनुमति देने के टाइप के बारे में सामान्य जानकारी और खास जानकारी दी गई है फ़्लो के साथ-साथ, Apigee Edge पर इस फ़्लो को लागू करने के तरीके के बारे में भी बताया है.

वीडियो

अपने एपीआई को सुरक्षित रखने के लिए, OAuth 2.0 अनुमति देने के तरीके का इस्तेमाल करने का तरीका जानने के लिए यह छोटा सा वीडियो देखें.

उपयोग के उदाहरण

यह अनुदान प्रकार उन ऐप्लिकेशन के लिए है जिन्हें तीसरे पक्ष के ऐसे डेवलपर ने लिखा है जो एपीआई सेवा देने वाली कंपनी के साथ आपका भरोसेमंद कारोबारी संबंध होना चाहिए. उदाहरण के लिए, रजिस्टर करने वाले डेवलपर के लिए, आम तौर पर भरोसेमंद एपीआई प्रोग्राम पर भरोसा नहीं किया जाना चाहिए. इस अनुदान प्रकार से, उपयोगकर्ता को रिसॉर्स सर्वर पर मौजूद क्रेडेंशियल कभी भी ऐप्लिकेशन के साथ शेयर नहीं किए जाते.

कोड सैंपल

ऑथराइज़ेशन कोड के अनुदान टाइप को लागू करने का सैंपल GitHub पर api-platform-samples रेपो में Apigee Edge. oauth-advanced देखें सैंपल की फ़ाइल को सबमिट करें. सैंपल के बारे में ज़्यादा जानकारी के लिए, README फ़ाइल करें.

फ़्लो डायग्राम

यहां दिया गया फ़्लो डायग्राम, Apigee Edge के साथ ऑथराइज़ेशन कोड का OAuth फ़्लो को दिखाता है अनुमति देने वाले सर्वर के तौर पर काम करता है.

सलाह: इस डायग्राम का बड़ा वर्शन देखने के लिए, उस पर राइट क्लिक करें और उसे नए टैब पर क्लिक करें या उसे सेव करके किसी इमेज व्यूअर में खोलें.

ऑथराइज़ेशन कोड फ़्लो के चरण

यहां ऑथराइज़ेशन कोड के अनुदान टाइप को लागू करने के तरीके की खास जानकारी दी गई है Apigee Edge, अनुमति देने वाले सर्वर के तौर पर काम करता है. याद रखें कि इस फ़्लो की कुंजी यह है कि क्लाइंट कभी भी रिसॉर्स सर्वर पर उपयोगकर्ता के क्रेडेंशियल नहीं देख पाते.

ज़रूरी शर्त: क्लाइंट ऐप्लिकेशन को Apigee Edge के साथ रजिस्टर होना चाहिए, ताकि तो आपको क्लाइंट आईडी और क्लाइंट सीक्रेट कुंजियां मिलेंगी. इनके लिए क्लाइंट ऐप्लिकेशन रजिस्टर करना देखें विवरण.

1. उपयोगकर्ता फ़्लो शुरू करता है

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

2. उपयोगकर्ता क्रेडेंशियल डालता है

अब उपयोगकर्ता को एक लॉगिन पेज दिखेगा, जहां उसे अपने लॉगिन क्रेडेंशियल डालने के लिए कहा जाएगा. अगर लॉगिन हो गया है, तो हम अगले चरण पर जाते हैं.

3. उपयोगकर्ता सहमति देता है

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

4. लॉगिन ऐप्लिकेशन अनुरोध Apigee Edge भेजता है

अगर लॉगिन और सहमति स्वीकार हो जाती है, तो लॉगिन ऐप्लिकेशन, डेटा को /ऑथराइज़ेशन कोड में पोस्ट करता है Apigee Edge का एंडपॉइंट. डेटा में रीडायरेक्ट यूआरआई, क्लाइंट आईडी, स्कोप, उपयोगकर्ता के हिसाब से कोई भी खास शामिल होता है शामिल की जाने वाली जानकारी, और लॉगिन सफल होने का संकेत शामिल है.

5. Apigee एज एक ऑथराइज़ेशन कोड जनरेट करता है

जब Edge को अपने /Authenticcode एंडपॉइंट पर लॉगिन ऐप्लिकेशन से जीईटी अनुरोध मिलता है, तो दो चीज़ें होती हैं. सबसे पहले, Edge से पता चलता है कि लॉगिन हो गया है (एचटीटीपी स्टेटस देखकर या दूसरे तरीकों से मदद ली जा सकती है). Next Edge यह पक्का करने के लिए जांच करता है कि लॉगिन ऐप्लिकेशन से रीडायरेक्ट यूआरआई भेजा गया है या नहीं Apigee Edge के साथ ऐप्लिकेशन के रजिस्टर होने के दौरान बताए गए रीडायरेक्ट यूआरआई से मेल खाता है. अगर आपने ठीक है, Edge एक ऑथराइज़ेशन कोड जनरेट करता है. उदाहरण के लिए:

http://myorg-test.apigee.net/oauth/authorizationcode?client_id={consumer_key}&response_type=code&redirect_uri={redirect_uri}&scope=scope1%20scope2&state={some_string}

6. किनारे यह ऑथराइज़ेशन कोड को क्लाइंट को वापस भेजता है

Edge, क्वेरी पैरामीटर के तौर पर पुष्टि करने के कोड के साथ 302 रीडायरेक्ट भेजता है क्लाइंट.

7. क्लाइंट, ऑथराइज़ेशन कोड को फिर से हासिल करता है और Edge से ऐक्सेस कोड का अनुरोध करता है

अब मान्य ऑथराइज़ेशन कोड की मदद से, क्लाइंट Edge से ऐक्सेस टोकन का अनुरोध कर सकता है. यह ऐसा करता है Client-ID और क्लाइंट सीक्रेट पासकोड पोस्ट करना (यह ईमेल, Edge पर ऐप्लिकेशन के रजिस्टर होने के दौरान मिला था), अनुमति का टाइप और दायरा. क्लाइंट आईडी और सीक्रेट पासकोड शामिल करके, 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'

8. क्लाइंट को ये चीज़ें मिलती हैं ऐक्सेस टोकन

सब कुछ पूरा होने पर, Edge क्लाइंट को ऐक्सेस टोकन देता है. ऐक्सेस टोकन से एक समयावधि खत्म हो जाती है. साथ ही, यह उपयोगकर्ता के दिए गए दायरे के लिए ही मान्य होगा ऐप्लिकेशन को उनके संसाधनों का ऐक्सेस देने की सहमति दें.

9. क्लाइंट सुरक्षित एपीआई

अब मान्य ऐक्सेस कोड का इस्तेमाल करके, क्लाइंट सुरक्षित एपीआई को कॉल कर सकता है. इसमें स्थितियों में, Apigee Edge (प्रॉक्सी) को अनुरोध किया जाता है और उसकी पुष्टि करने की ज़िम्मेदारी Edge की होती है एपीआई कॉल को टारगेट रिसॉर्स सर्वर पर भेजने से पहले, ऐक्सेस टोकन का इस्तेमाल करता है. ऐक्सेस टोकन को ऑथराइज़ेशन हेडर में पास किया जाता है. उदाहरण के लिए:

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

फ़्लो और नीतियां कॉन्फ़िगर करना

ऑथराइज़ेशन सर्वर के तौर पर Edge को कई OAuth अनुरोधों को प्रोसेस करना होगा: ऐक्सेस करने के लिए टोकन, ऑथराइज़ेशन कोड, रीफ़्रेश टोकन, लॉगिन पेज रीडायरेक्ट वगैरह. पहचान ज़ाहिर करने के दो बुनियादी चरण हैं, इन एंडपॉइंट को कॉन्फ़िगर करें:

  • कस्टम फ़्लो बनाना
  • OAuthV2 नीतियों को जोड़ना और कॉन्फ़िगर करना

कस्टम फ़्लो कॉन्फ़िगरेशन

आम तौर पर, अनुदान के इस टाइप के फ़्लो को कॉन्फ़िगर किया जाता है, ताकि हर चरण या "लेग" को तय किया गया है कि Apigee Edge प्रॉक्सी में फ़्लो के हिसाब से. हर फ़्लो का एक एंडपॉइंट और एक नीति होती है, जो OAuth के हिसाब से ज़रूरी टास्क, जैसे कि ऑथराइज़ेशन कोड या ऐक्सेस टोकन जनरेट करना. इसके लिए उदाहरण के लिए, जैसा कि नीचे एक्सएमएल में दिखाया गया है, /oauth/authorizationcode एंडपॉइंट में जनरेट की गई नीति जिसे generateAuthCode कहा जाता है (जो कि जनरेट करने का तरीका जनरेट करने के लिए कोड जनरेट करने का तरीका बताया गया है).

एक्सएमएल के उदाहरण की मदद से, फ़्लो कॉन्फ़िगरेशन को आसानी से दिखाया जा सकता है. इन-लाइन देखें टिप्पणी पढ़ें. यह एक उदाहरण है -- फ़्लो और पाथ के नाम आपके हिसाब से कॉन्फ़िगर किया जा सकता है. 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>

नीतियों के साथ फ़्लो को कॉन्फ़िगर करना

हर एंडपॉइंट के साथ एक नीति जुड़ी होती है. आइए, नीतियों के उदाहरण देखते हैं. यहां जाएं: OAuth कॉन्फ़िगर करना भी एंडपॉइंट और नीतियों की मदद से, OAuthV2 नीतियों को जोड़ने के ज़रूरी चरणों की खास जानकारी पाएं प्रॉक्सी एंडपॉइंट पर भी.

लॉगिन रीडायरेक्ट

यह /oauth/authorize पाथ है. अटैच की गई नीति इनके लिए ज़िम्मेदार है उपयोगकर्ता को लॉगिन ऐप्लिकेशन पर रीडायरेक्ट करता है, जहां असली उपयोगकर्ता अपने सुरक्षित संसाधनों को ऐक्सेस करने के लिए, क्लाइंट ऐप्लिकेशन का उपयोगकर्ता नाम और पासवर्ड बताए बिना को लोड कर सकें. सेवा कॉलआउट की नीति, JavaScript, Node.js या से संपर्क करना है.

अनुरोध करने के लिए एपीआई कॉल एक जीईटी है और इसके लिए क्वेरी पैरामीटर client_id की ज़रूरत होती है, response_type, redirect_uri, स्कोप, और स्थिति की जानकारी के साथ.

$ 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 पाथ है. यह OAuthV2 नीति का इस्तेमाल generateAuthorizationCode कार्रवाई तय की गई.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GetAuthCode">
    <DisplayName>GetAuthCode</DisplayName>
    <Operation>GenerateAuthorizationCode</Operation>
    <ExpiresIn>600000</ExpiresIn>
    <GenerateResponse/>
</OAuthV2>

ऑथराइज़ेशन कोड पाने के लिए एपीआई कॉल एक GET है और इसके लिए क्वेरी पैरामीटर की ज़रूरत होती है client_id, response_type, और वैकल्पिक रूप से स्कोप और स्थिति, जैसा कि इस उदाहरण में दिखाया गया है:

$curl http://myorg-test.apigee.net/oauth/authorizationcode?client_id={consumer_key}&response_type=code&scope=scope1%20scope2&state={some_string}

ऐक्सेस टोकन पाएं

यह नीति, /oauth/accesstoken पाथ से जुड़ी है. यह OAuthV2 का इस्तेमाल करता है इस नीति के तहत, generateAccessCode कार्रवाई की जानकारी दी गई है. इस मामले में, Grants_type पैरामीटर क्वेरी पैरामीटर के रूप में अपेक्षित:

<OAuthV2 name="GetAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>360000000</ExpiresIn> 
    <SupportedGrantTypes> 
        <GrantType>authorization_code</GrantType> 
    </SupportedGrantTypes> 
    <GrantType>request.queryparam.grant_type</GrantType> 
    <GenerateResponse/> 
</OAuthV2>

ऐक्सेस कोड पाने के लिए एपीआई कॉल एक पीओएसटी होता है और उसमें client_id शामिल होना चाहिए, client_secret, developer_type=authorized_code, और वैकल्पिक रूप से, स्कोप शामिल है. उदाहरण के लिए:

$ curl https://{org_name}-test.apigee.net/oauth/accesstoken?grant_type=authorization_code -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

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

'ऐक्सेस टोकन की पुष्टि करें' नीति अटैच की जा रही है

VerifyAccessToken नीति अटैच करें (VerifyAccessToken कार्रवाई के साथ OAuthV2 नीति किसी भी सुरक्षित एपीआई को ऐक्सेस करने वाले किसी भी फ़्लो की शुरुआत तक, ताकि उसे एक्ज़ीक्यूट किया जा सके Google की ओर से सुरक्षित किए गए संसाधनों का अनुरोध आने पर. 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>

सुरक्षित एपीआई को कॉल किया जा रहा है

OAuth 2.0 सुरक्षा से सुरक्षित एपीआई को कॉल करने के लिए, आपको मान्य ऐक्सेस दिखाना होगा टोकन. सही पैटर्न यह है कि टोकन को अनुमति वाले हेडर में शामिल किया जाए. इसका तरीका यहां बताया गया है: ध्यान दें ऐक्सेस टोकन को "बियरर टोकन" भी कहा जाता है.

$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \
  http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282 

यह भी देखें ऐक्सेस टोकन.