क्लाइंट क्रेडेंशियल के अनुदान टाइप को लागू करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

क्लाइंट क्रेडेंशियल के अनुदान टाइप की मदद से, ऐप्लिकेशन Apigee Edge पर मौजूद एंडपॉइंट पर अपने खुद के क्रेडेंशियल (क्लाइंट आईडी और क्लाइंट सीक्रेट) भेजता है. इस एंडपॉइंट को ऐक्सेस टोकन जनरेट करने के लिए सेट अप किया गया था. अगर क्रेडेंशियल मान्य हैं, तो Edge क्लाइंट ऐप्लिकेशन के लिए ऐक्सेस टोकन दिखाता है.

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

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

इस्तेमाल के उदाहरण

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

भूमिकाएं

भूमिकाएं उन "अभिनेताओं" के बारे में बताती हैं जो OAuth फ़्लो में शामिल होते हैं. चलिए, क्लाइंट के क्रेडेंशियल की भूमिकाओं के बारे में खास जानकारी देखते हैं, ताकि यह पता चल सके कि Apigee Edge कहां फ़िट होता है. OAuth 2.0 भूमिकाओं के बारे में पूरी जानकारी पाने के लिए, IETF OAuth 2.0 की खास बातें देखें.

  • क्लाइंट ऐप्लिकेशन -- वह ऐप्लिकेशन जिसे उपयोगकर्ता के सुरक्षित संसाधनों का ऐक्सेस चाहिए. आम तौर पर, इस फ़्लो में ऐप्लिकेशन उपयोगकर्ता के लैपटॉप या डिवाइस पर चलने के बजाय, सर्वर पर चलता है.
  • Apigee Edge -- इस फ़्लो में, Apigee Edge, OAuth की पुष्टि करने वाला सर्वर है. इसकी भूमिका, ऐक्सेस टोकन जनरेट करना, ऐक्सेस टोकन की पुष्टि करना, और सुरक्षित संसाधनों के लिए आधिकारिक अनुरोधों को रिसॉर्स सर्वर पर भेजना है.
  • संसाधन सर्वर -- वह बैकएंड सेवा, जो सुरक्षित किए गए ऐसे डेटा को सेव करती है जिसे ऐक्सेस करने के लिए क्लाइंट ऐप्लिकेशन को अनुमति की ज़रूरत होती है. अगर Apigee Edge पर होस्ट किए गए एपीआई प्रॉक्सी को सुरक्षित रखा जा रहा है, तो Apigee Edge भी रिसॉर्स सर्वर है.

कोड सैंपल

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

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

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


क्लाइंट क्रेडेंशियल फ़्लो में शामिल होने का तरीका

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

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

1. क्लाइंट, ऐक्सेस टोकन का अनुरोध करता है

ऐक्सेस टोकन पाने के लिए, क्लाइंट, क्लाइंट आईडी और रजिस्टर किए गए डेवलपर ऐप्लिकेशन से मिलने वाले क्लाइंट सीक्रेट की वैल्यू के साथ Edge पर एपीआई कॉल पोस्ट करता है. इसके अलावा, ग्रांट_type=client_क्रेडेंशियल पैरामीटर को क्वेरी पैरामीटर के तौर पर पास करना ज़रूरी है. हालांकि, अनुरोध के हेडर या मुख्य हिस्से में इस पैरामीटर को स्वीकार करने के लिए, OAuthV2 नीति को कॉन्फ़िगर किया जा सकता है. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.

उदाहरण के लिए:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials&client_id=ns4fQc14Zg4hKFCNaSzArVuwszX95X&client_secret=ZIjFyTsNgQNyxI'

ध्यान दें: ऊपर बताए गए तरीके से, client_id और client_secret वैल्यू को क्वेरी पैरामीटर के तौर पर भेजा जा सकता है, तो बेहतर होगा कि आप उन्हें ऑथराइज़ेशन हेडर में Base64 यूआरएल कोड में बदली गई स्ट्रिंग के तौर पर पास करें. ऐसा करने के लिए, आपको base64 कोड में बदलने वाले टूल या एक सुविधा का इस्तेमाल करना होगा, ताकि दोनों वैल्यू को एक साथ कोड में बदला जा सके और कोलन को अलग किया जा सके. इस तरह: aBase64EncodeFunction(clientidvalue:clientsecret). इसलिए, ऊपर दिए गए उदाहरण को इस तरह कोड में बदला जाएगा:

नतीजा = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // दो वैल्यू को अलग करने वाले कोलन पर ध्यान दें.

ऊपर दी गई स्ट्रिंग को base64 कोड में बदलने का नतीजा यह है: bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==

फिर, टोकन के लिए इस तरह का अनुरोध करें:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg=='

2. Edge क्रेडेंशियल की पुष्टि करता है

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

3. Edge जवाब देता है

अगर क्रेडेंशियल सही हैं, तो Edge क्लाइंट को ऐक्सेस टोकन देता है. अगर ऐसा नहीं है, तो कोई गड़बड़ी दिखती है.

4. क्लाइंट, सुरक्षित एपीआई को कॉल करता है

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

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

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

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

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

<Flows>
  <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>GetAccessToken</Name></Step>
    </Request>
  </Flow>
</Flows>

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

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

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

यह नीति, /accesstoken पाथ से अटैच की गई है. इसमें, generateAccessToken कार्रवाई के साथ OAuthV2 नीति का इस्तेमाल किया जाता है.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse/>
</OAuthV2>

ऐक्सेस टोकन पाने के लिए किया गया एपीआई कॉल, एक POST है. इसमें, base64 कोड में बदले गए client_id + client+secret और क्वेरी पैरामीटर के साथ-साथ, Grants_type=client_credentials भी अनुमति देने वाला हेडर शामिल होता है. इसमें दायरे और स्थिति के लिए, वैकल्पिक पैरामीटर भी शामिल हो सकते हैं. उदाहरण के लिए:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'

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

OAuth 2.0 सुरक्षा के साथ अपने एपीआई को सुरक्षित रखने के लिए, आपको VerifyAccessToken कार्रवाई के साथ OAuthV2 नीति जोड़नी होगी. यह नीति जांच करती है कि इनकमिंग अनुरोधों में मान्य ऐक्सेस टोकन है या नहीं. अगर टोकन मान्य है, तो Edge अनुरोध को प्रोसेस करता है. अगर यह मान्य नहीं है, तो 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 

ऐक्सेस टोकन भेजना भी देखें.

दूसरे संसाधन

  • Apigee, एपीआई डेवलपर को ऑनलाइन ट्रेनिंग देता है. इसमें, एपीआई की सुरक्षा से जुड़ा एक कोर्स भी शामिल है, जिसमें OAuth शामिल है.
  • OAuthV2 नीति -- इसमें ऐसे कई उदाहरण हैं जिनमें अनुमति देने वाले सर्वर से अनुरोध करने और OAuthV2 नीति को कॉन्फ़िगर करने के तरीके दिखाए गए हैं.