Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं. info
वर्शन: 2.0.0
आपने Google के जिन एपीआई को ऐक्सेस करने के लिए अनुरोध किया है उनके लिए, Google से पुष्टि करें.
इस एक्सटेंशन का इस्तेमाल करके, Google Cloud सेवाओं के लिए टोकन (OAuth या JWT) पाएं. इसके बाद, Google API को कॉल करने के लिए इस टोकन का इस्तेमाल करें. जैसे, ServiceCallout नीति का इस्तेमाल करके.
उदाहरण के लिए, किसी एपीआई प्रॉक्सी में आपको इस एक्सटेंशन वाला टोकन मिल सकता है. इसके बाद, PopulateCache नीति का इस्तेमाल करके टोकन को कैश मेमोरी में सेव किया जा सकता है. इसके बाद, ServiceCallout नीति का इस्तेमाल करके टोकन को पास किया जा सकता है, ताकि एपीआई प्रॉक्सी फ़्लो में Google Cloud की सेवाओं को ऐक्सेस किया जा सके.
ज़रूरी शर्तें
इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इस्तेमाल करने के बारे में जानकारी दी गई है. ExtensionCallout नीति का इस्तेमाल करके, एपीआई प्रॉक्सी से एक्सटेंशन का इस्तेमाल करने से पहले, आपको यह काम करना होगा:
पक्का करें कि एक्सटेंशन जिस खाते का इस्तेमाल करेगा उसके पास, Google Cloud की उन सेवाओं का ऐक्सेस हो जिनके लिए एक्सटेंशन पुष्टि करेगा. यह वह खाता होना चाहिए जिसे सेवा खाते से दिखाया जाता है. सेवा खाते का इस्तेमाल क्रेडेंशियल के लिए किया जाएगा.
Google Cloud Console का इस्तेमाल करके, सेवा खाते के लिए कुंजी जनरेट करें.
कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, सेवा खाते की कुंजी वाली JSON फ़ाइल के कॉन्टेंट का इस्तेमाल करें.
Google Cloud से पुष्टि करने के बारे में जानकारी
यह एक्सटेंशन, Google Cloud से पुष्टि करने का अनुरोध करता है. इसके लिए, यह आपके Google Cloud प्रोजेक्ट में तय किए गए किसी सदस्य के तौर पर काम करता है. इस एक्सटेंशन को कॉन्फ़िगर करते समय, प्रोजेक्ट के सदस्य के सेवा खाते की JSON फ़ाइल का इस्तेमाल किया जाता है.
इसलिए, इस एक्सटेंशन के पास सिर्फ़ उन संसाधनों का ऐक्सेस होगा जिनके लिए उस सदस्य के पास अनुमति है. दूसरे शब्दों में कहें, तो इस एक्सटेंशन से पुष्टि हो पाएगी या नहीं, यह इस बात पर निर्भर करता है कि Google Cloud Console में दी गई अनुमतियां और एक्सटेंशन की ओर से रनटाइम में (स्कोप या ऑडियंस के ज़रिए) अनुरोध किया गया ऐक्सेस, दोनों एक जैसे हों.
आम तौर पर, इस एक्सटेंशन से एपीआई को ऐक्सेस करने के लिए पुष्टि करने का तरीका यह होगा:
पक्का करें कि जिस सदस्य सेवा खाते के लिए यह एक्सटेंशन काम कर रहा है उसके पास उस Google संसाधन को ऐक्सेस करने की अनुमति हो जिसे आपको ऐक्सेस करना है. Google Cloud Console में, Cloud Identity and Access Management (Cloud IAM) पेज का इस्तेमाल करके, प्रोजेक्ट के उस सदस्य को भूमिकाएं असाइन की जा सकती हैं जिसे यह एक्सटेंशन दिखाता है.
इस एक्सटेंशन को कॉन्फ़िगर करते समय, उस सदस्य के सेवा खाते की कुंजी वाले JSON का इस्तेमाल करें.
इस एक्सटेंशन का इस्तेमाल करने के लिए, ExtensionCallout नीति कॉन्फ़िगर करते समय, सिर्फ़ उन संसाधनों के लिए पुष्टि करने का अनुरोध करें जिनका ऐक्सेस आपके प्रोजेक्ट के सदस्य के पास है.
सैंपल
यहां दिए गए उदाहरणों में, ExtensionCallout नीति का इस्तेमाल करके, Google Cloud से पुष्टि करने का तरीका बताया गया है.
ऐक्सेस टोकन पाना
इस उदाहरण में, एक्सटेंशन का getOauth2AccessToken ऐक्शन, Cloud Translation API को किए जाने वाले अनुरोधों में इस्तेमाल करने के लिए एक टोकन वापस लाता है.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-Access-Token">
<DisplayName>Get Access Token</DisplayName>
<Connector>google-auth</Connector>
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
<Output>google.credentials</Output>
</ConnectorCallout>
रिस्पॉन्स वैल्यू कुछ इस तरह दिखती है:
{
"access_token":"ya29.c.ElpSB...BMgkALBJ0kou-8",
"token_type":"Bearer",
"expiresInSec": 3600
}
यहां दी गई AssignMessage नीति, ExtensionCallout नीति से जवाब की वैल्यू वापस लाती है और उसे जवाब के पेलोड में कॉपी करती है. यह डीबग करने के लिए मददगार हो सकता है. हालांकि, ऐसा हो सकता है कि आपको क्लाइंट को टोकन वापस न करना हो.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Retrieve-Auth-Token">
<DisplayName>Retrieve Auth Token</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{google.credentials.access_token}</Payload>
</Set>
</AssignMessage>
ऐक्सेस टोकन को कैश मेमोरी में सेव करना
टोकन पाने के लिए बेवजह कॉल करने से बचने के लिए, मिले हुए टोकन को कैश मेमोरी में सेव करें. इसके बाद, जिन कॉल के लिए टोकन की ज़रूरत होती है उनके लिए, Apigee Edge की कैश मेमोरी से टोकन को फिर से पाना, नया टोकन पाने की तुलना में ज़्यादा तेज़ होगा. कैश किए गए टोकन की समयसीमा खत्म होने पर, नया टोकन पाएं और उससे कैश मेमोरी को रीफ़्रेश करें.
उदाहरण के तौर पर दी गई एपीआई प्रॉक्सी का यह कोड दिखाता है कि ServiceCallout नीति के साथ Google Translation API को कॉल करने के लिए, कैश मेमोरी में सेव किए गए टोकन को कैसे सेट और इस्तेमाल किया जाता है. यहां दिए गए कोड के हर उदाहरण में, फ़्लो में मौजूद किसी अलग नीति के बारे में बताया गया है.
यहां दी गई नीतियां, इस क्रम में लागू की जाती हैं. इस क्रम के बारे में यहां दिए गए फ़्लो एक्सएमएल में बताया गया है:
<Request>
<!-- Attempt to get a token from the cache. -->
<Step>
<Name>Get-Cached-Auth-Token</Name>
</Step>
<!-- Only execute the following ExtensionCallout policy if the call to the
cache couldn't retrieve a cached token. -->
<Step>
<Name>Google-Auth-Callout</Name>
<Condition>lookupcache.Get-Cached-Auth-Token.cachehit is false</Condition>
</Step>
<!-- Only execute the following PopulateCache policy if the call to the
cache couldn't retrieve a cached token. -->
<Step>
<Name>Cache-Auth-Token</Name>
<Condition>lookupcache.Get-Cached-Auth-Token.cachehit is false</Condition>
</Step>
<!-- Use the ServiceCallout policy to call the translate API. -->
<Step>
<Name>Translate-Text</Name>
</Step>
</Request>
यहां दी गई LookupCache नीति, कैश मेमोरी से टोकन पाने की कोशिश करती है. अगर टोकन पहले ही मिल चुका है और उसे कैश मेमोरी में सेव कर लिया गया है, तो यह नीति उसे एपीआई प्रॉक्सी के इस्तेमाल के लिए उपलब्ध कराएगी.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <LookupCache async="false" continueOnError="false" enabled="true" name="Get-Cached-Auth-Token"> <DisplayName>Get Cached Auth Token</DisplayName> <!-- Give cache key and scope to specify the entry for the cached token. --> <CacheKey> <Prefix/> <KeyFragment>gcp_translate_token_</KeyFragment> </CacheKey> <Scope>Exclusive</Scope> <!-- Assign the retrieved token (if any) to a variable, where it can be retrieved by policies. --> <AssignTo>cloud.translation.auth.token</AssignTo> </LookupCache>अगर कैश मेमोरी में खोज करने पर, कैश किया गया टोकन नहीं मिलता है, तो ExtensionCallout की यह नीति नया OAuth टोकन वापस लाती है. इसमें Google Cloud Translation API को टोकन के स्कोप के तौर पर तय किया जाता है. अगर
Google-Auth-Calloutएक्सटेंशन को कॉन्फ़िगर करते समय इस्तेमाल किए गए सेवा खाते के क्रेडेंशियल, ऐसे प्रोजेक्ट मेंबर के हैं जिसके पास एपीआई का ऐक्सेस है, तो Google Cloud एक मान्य टोकन दिखाता है.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Google-Auth-Callout"> <DisplayName>Google-Auth-Callout</DisplayName> <Connector>example-auth-extension</Connector> <Action>getOauth2AccessToken</Action> <Input><![CDATA[{ "scope" : ["https://www.googleapis.com/auth/cloud-translation"] }]]></Input> <Output parsed="false">cloud.translation.auth.token</Output> </ConnectorCallout>ExtensionCallout नीति के नए टोकन को वापस पाने के बाद, PopulateCache नीति उसे कैश मेमोरी में सेव कर लेती है. इससे एपीआई प्रॉक्सी में मौजूद नीतियां बाद में उसका इस्तेमाल कर सकती हैं.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <PopulateCache async="false" continueOnError="false" enabled="true" name="Cache-Auth-Token"> <DisplayName>Cache Auth Token</DisplayName> <Properties/> <!-- Set cache key information to specify a unique key for this entry. --> <CacheKey> <Prefix/> <KeyFragment>gcp_translate_token_</KeyFragment> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSec>5</TimeoutInSec> </ExpirySettings> <!-- Get the token to cache from the variable where the ExtensionCallout put it. --> <Source>cloud.translation.auth.token</Source> </PopulateCache>
कार्रवाइयां
getOauth2AccessToken
यह कुकी, OAuth 2.0 ऐक्सेस टोकन को पाने के लिए सेट की जाती है. इस कार्रवाई का इस्तेमाल, Google APIs और आपकी एपीआई प्रॉक्सी के बीच दो लेग वाले OAuth को सपोर्ट करने के लिए करें. ऐसा तब करें, जब Google APIs को OAuth टोकन की ज़रूरत हो.
Two-legged OAuth में, यह एक्सटेंशन कार्रवाई, सेवा खाते के JSON का इस्तेमाल करके Google से पुष्टि करती है और OAuth टोकन वापस पाती है. इस एक्सटेंशन को कॉन्फ़िगर करते समय, आपको वह JSON जोड़ना होता है. इस कार्रवाई से OAuth टोकन मिलने के बाद, आपकी एपीआई प्रॉक्सी इस टोकन का इस्तेमाल करके Google API को कॉल कर सकती है. इसका मतलब है कि वह Google सेवा खाते की ओर से एपीआई को कॉल कर सकती है.
Google Cloud APIs को ऐक्सेस करने की अनुमति, Google APIs के लिए OAuth 2.0 के दायरे में दी गई अनुमतियों के हिसाब से दी जाती है.
OAuth 2.0 के साथ सर्वर-टू-सर्वर इंटरैक्शन के बारे में ज़्यादा जानने के लिए, सर्वर-टू-सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें
सिंटैक्स
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"scope1",
"scope2"
]
}]]></Input>
उदाहरण
इस उदाहरण में, एक्सटेंशन का getOauth2AccessToken ऐक्शन, Cloud Translation API को किए जाने वाले अनुरोधों में इस्तेमाल करने के लिए एक टोकन वापस लाता है.
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
अनुरोध के पैरामीटर
| पैरामीटर | ब्यौरा | टाइप | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|---|
| दायरा | OAuth 2.0 स्कोप का एक कलेक्शन. स्कोप के बारे में ज़्यादा जानने के लिए, Google APIs के लिए OAuth 2.0 के स्कोप लेख पढ़ें. | Array | ["https://www.googleapis.com/auth/cloud-platform"], जो उन सभी एपीआई को ऐक्सेस करने की अनुमति देता है जिन्हें सेवा खाता ऐक्सेस कर सकता है. |
नहीं. |
जवाब
यह एक ऑब्जेक्ट होता है. इसमें ऐक्सेस टोकन, उसका टाइप, और उसके खत्म होने की तारीख इस फ़ॉर्म में होती है:
{
"accessToken": "ewogICJ0eXB...C5jb20iCn0K",
"token_type": "Bearer",
"expiresInSec": 3600
}
जवाब की प्रॉपर्टी
| पैरामीटर | ब्यौरा | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|
| accessToken | OAuth 2.0 ऐक्सेस टोकन. | कोई नहीं | हां |
| tokenType | टोकन का टाइप. | धारक | हां |
| expiresInSec | टोकन की समयसीमा खत्म होने में बचे हुए सेकंड की संख्या. | 3600 | हां |
getJWTAccessToken
यह JSON वेब टोकन (JWT) ऐक्सेस टोकन को ऐक्सेस करता है. अगर आपको जिस एपीआई को कॉल करना है उसका सेवा से जुड़ा ब्यौरा Google APIs के GitHub डेटाबेस में पब्लिश किया गया है, तो Google APIs के साथ पुष्टि करने के लिए इस टोकन का इस्तेमाल किया जा सकता है.
कुछ Google API के साथ, OAuth 2.0 ऐक्सेस टोकन के बजाय, सीधे तौर पर हस्ताक्षर किए गए JWT का इस्तेमाल करके, धारक टोकन के तौर पर एपीआई कॉल किए जा सकते हैं. ऐसा होने पर, एपीआई कॉल करने से पहले, आपको Google के अनुमति देने वाले सर्वर को नेटवर्क का अनुरोध नहीं भेजना पड़ता.
JWT ऐक्सेस टोकन की मदद से पुष्टि करने के बारे में ज़्यादा जानने के लिए, सर्वर-टू-सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.
सिंटैक्स
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "audience"
}]]></Input>
उदाहरण: Cloud Function का यूआरएल
इस उदाहरण में, एक्सटेंशन का getOauth2AccessToken ऐक्शन, Cloud Translation API को किए जाने वाले अनुरोधों में इस्तेमाल करने के लिए एक टोकन वापस लाता है.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME"
}]]></Input>
उदाहरण: Cloud IAP से सुरक्षित किया गया क्लाइंट आईडी
इस उदाहरण में, एक्सटेंशन का getOauth2AccessToken ऐक्शन, Cloud Translation API को किए जाने वाले अनुरोधों में इस्तेमाल करने के लिए एक टोकन वापस लाता है.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "Cloud-IAP-secured-client-ID"
}]]></Input>
अनुरोध के पैरामीटर
| पैरामीटर | ब्यौरा | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|
| दर्शक | टोकन पाने वाला व्यक्ति. इसमें Cloud IAP से सुरक्षित क्लाइंट आईडी और Cloud Functions का यूआरएल शामिल हो सकता है. | कोई नहीं | हां |
जवाब
{
"accessToken": "token",
"tokenType": "Bearer",
"expiresInSec": 3600
}
जवाब की प्रॉपर्टी
| पैरामीटर | ब्यौरा | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|
| accessToken | ऐक्सेस टोकन. | कोई नहीं | हां |
| tokenType | टोकन का टाइप. | धारक | हां |
| expiresInSec | सेकंड में खत्म होने की अवधि. | 3600 | हां |
कॉन्फ़िगरेशन का रेफ़रंस
एपीआई प्रॉक्सी में इस एक्सटेंशन का इस्तेमाल करने के लिए, इसे कॉन्फ़िगर और डिप्लॉय करते समय यहां दी गई जानकारी का इस्तेमाल करें. Apigee कंसोल का इस्तेमाल करके एक्सटेंशन को कॉन्फ़िगर करने का तरीका जानने के लिए, एक्सटेंशन जोड़ना और उसे कॉन्फ़िगर करना लेख पढ़ें.
सामान्य एक्सटेंशन प्रॉपर्टी
हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.
| प्रॉपर्टी | जानकारी | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|
name |
वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. | कभी नहीं | हां |
packageName |
एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. | कभी नहीं | हां |
version |
उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. | कभी नहीं | हां |
configuration |
आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें | कभी नहीं | हां |
इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी
इस एक्सटेंशन के लिए, कॉन्फ़िगरेशन की इन प्रॉपर्टी की वैल्यू तय करें.
| प्रॉपर्टी | ब्यौरा | डिफ़ॉल्ट | ज़रूरी है |
|---|---|---|---|
| क्रेडेंशियल | Apigee Edge कंसोल में डालने पर, यह आपकी सेवा खाते की कुंजी वाली JSON फ़ाइल का पूरा कॉन्टेंट होता है. Management API का इस्तेमाल करके भेजे जाने पर, यह पूरी सेवा खाते की कुंजी वाली JSON फ़ाइल से जनरेट की गई base64-एन्कोड की गई वैल्यू होती है. | कोई नहीं | हां |