আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
সংস্করণ: 2.0.2
আপনার নির্দিষ্ট করা Google API গুলিতে অ্যাক্সেসের জন্য Google এর সাথে প্রমাণীকরণ করুন।
গুগল ক্লাউড পরিষেবার জন্য একটি টোকেন (OAuth বা JWT) পেতে এই এক্সটেনশনটি ব্যবহার করুন, তারপর গুগল এপিআই-তে পরবর্তী কলের জন্য টোকেনটি ব্যবহার করুন, যেমন একটি সার্ভিসকলআউট নীতি ব্যবহার করে।
উদাহরণস্বরূপ, একটি API প্রক্সিতে আপনি এই এক্সটেনশনের মাধ্যমে একটি টোকেন পেতে পারেন, PopulateCache নীতি ব্যবহার করে টোকেনটি ক্যাশে করুন, তারপর একটি API প্রক্সি প্রবাহের মধ্যে থেকে Google ক্লাউড পরিষেবাগুলি অ্যাক্সেস করতে ServiceCallout নীতি ব্যবহার করে টোকেনটি পাস করুন।
পূর্বশর্ত
এই কন্টেন্টটি এই এক্সটেনশনটি কনফিগার এবং ব্যবহারের জন্য রেফারেন্স প্রদান করে। ExtensionCallout নীতি ব্যবহার করে একটি API প্রক্সি থেকে এক্সটেনশনটি ব্যবহার করার আগে, আপনাকে অবশ্যই:
নিশ্চিত করুন যে এক্সটেনশনটি যে অ্যাকাউন্টটি ব্যবহার করবে -- যে পরিষেবা অ্যাকাউন্টটি আপনি শংসাপত্রের জন্য ব্যবহার করবেন -- সেই অ্যাকাউন্টটি এক্সটেনশনটি যে Google ক্লাউড পরিষেবাগুলির সাথে প্রমাণীকরণ করবে তাতে অ্যাক্সেস আছে।
পরিষেবা অ্যাকাউন্টের জন্য একটি কী তৈরি করতে Google ক্লাউড কনসোল ব্যবহার করুন ।
কনফিগারেশন রেফারেন্স ব্যবহার করে এক্সটেনশন যোগ এবং কনফিগার করার সময় ফলাফলস্বরূপ পরিষেবা অ্যাকাউন্ট কী JSON ফাইলের বিষয়বস্তু ব্যবহার করুন।
গুগল ক্লাউডের মাধ্যমে প্রমাণীকরণ সম্পর্কে
এই এক্সটেনশনটি আপনার Google ক্লাউড প্রোজেক্টে সংজ্ঞায়িত একটি নির্দিষ্ট সদস্যের প্রতিনিধিত্ব করে Google ক্লাউড থেকে প্রমাণীকরণের অনুরোধ করে। এই এক্সটেনশনটি কনফিগার করার সময় আপনি সেই প্রোজেক্ট সদস্যের পরিষেবা অ্যাকাউন্ট JSON ফাইল ব্যবহার করেন।
ফলস্বরূপ, এই এক্সটেনশনটি কেবলমাত্র সেইসব রিসোর্সে অ্যাক্সেস পাবে যার জন্য সেই সদস্যের অনুমতি আছে। অন্য কথায়, এই এক্সটেনশনের সফল প্রমাণীকরণ Google Cloud Console-এ প্রদত্ত অনুমতি এবং রানটাইমে এক্সটেনশনের (স্কোপ বা দর্শকদের মাধ্যমে) অনুরোধ করা অ্যাক্সেসের মধ্যে মিলের উপর নির্ভর করে।
সাধারণত, এই এক্সটেনশন থেকে API গুলিতে অ্যাক্সেসের জন্য প্রমাণীকরণের জন্য আপনার পদক্ষেপগুলি নিম্নলিখিত হবে:
নিশ্চিত করুন যে এই এক্সটেনশনটি যে সদস্য পরিষেবা অ্যাকাউন্টের প্রতিনিধিত্ব করছে সেটির আপনি যে Google রিসোর্সটি অ্যাক্সেস করতে চান তাতে অ্যাক্সেস আছে। এই এক্সটেনশনটি যে প্রকল্প সদস্যের প্রতিনিধিত্ব করে তাকে ভূমিকা প্রদান করতে আপনি Google Cloud Console-এর Cloud Identity and Access Management (Cloud IAM) পৃষ্ঠাটি ব্যবহার করতে পারেন।
এই এক্সটেনশনটি কনফিগার করার সময় সেই সদস্যের পরিষেবা অ্যাকাউন্ট কী JSON ব্যবহার করুন।
এই এক্সটেনশনটি ব্যবহার করার জন্য একটি ExtensionCallout নীতি কনফিগার করার সময়, শুধুমাত্র সেইসব রিসোর্সের জন্য প্রমাণীকরণের অনুরোধ করুন যেখানে আপনার প্রকল্প সদস্যের অ্যাক্সেস আছে।
নমুনা
নিম্নলিখিত উদাহরণগুলি এক্সটেনশনকলআউট নীতি ব্যবহার করে গুগল ক্লাউডের সাথে কীভাবে প্রমাণীকরণ করতে হয় তা ব্যাখ্যা করে।
একটি অ্যাক্সেস টোকেন পান
নিম্নলিখিত উদাহরণে, এক্সটেনশনের getOauth2AccessToken অ্যাকশন ক্লাউড ট্রান্সলেশন 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 ক্যাশে থেকে টোকেনটি পুনরুদ্ধার করা নতুন টোকেন পাওয়ার চেয়ে দ্রুত হবে। ক্যাশে করা টোকেনের মেয়াদ শেষ হয়ে গেলে, একটি নতুন টোকেন পুনরুদ্ধার করুন এবং এটি দিয়ে ক্যাশে রিফ্রেশ করুন।
একটি উদাহরণ API প্রক্সি থেকে নিম্নলিখিত কোডটি ব্যাখ্যা করে যে কীভাবে একটি সার্ভিসকলআউট নীতি সহ Google অনুবাদ API কল করার জন্য একটি ক্যাশেড টোকেন সেট এবং ব্যবহার করতে হয়। এখানে প্রতিটি কোড উদাহরণ প্রবাহের একটি ভিন্ন নীতির জন্য।
নিম্নলিখিত নীতিগুলি নিম্নলিখিত প্রবাহ XML দ্বারা বর্ণিত ক্রমানুসারে কার্যকর করা হয়:
<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 নীতি ক্যাশে থেকে একটি টোকেন পাওয়ার চেষ্টা করে। যদি টোকেনটি ইতিমধ্যেই প্রাপ্ত এবং ক্যাশে করা হয়ে থাকে, তাহলে এই নীতিটি API প্রক্সি দ্বারা ব্যবহারের জন্য এটি পাবে।
<?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এক্সটেনশন কনফিগার করার সময় ব্যবহৃত পরিষেবা অ্যাকাউন্ট শংসাপত্রগুলি যদি API-তে অ্যাক্সেস আছে এমন কোনও প্রকল্প সদস্যকে প্রতিনিধিত্ব করে তবে 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 নীতি এটিকে API প্রক্সিতে নীতিগুলির দ্বারা পরবর্তীতে ব্যবহারের জন্য ক্যাশে করে।
<?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 API-এর জন্য OAuth টোকেনের প্রয়োজন হয়, তখন আপনার API প্রক্সি এবং Google API-এর মধ্যে দুই-স্তরের OAuth সমর্থন করতে এই ক্রিয়াটি ব্যবহার করুন।
দুই-পায়ের OAuth-এ, এই এক্সটেনশন অ্যাকশনটি একটি পরিষেবা অ্যাকাউন্ট JSON ব্যবহার করে Google-এর সাথে প্রমাণীকরণ করে একটি OAuth টোকেন পুনরুদ্ধার করে (এই এক্সটেনশনটি কনফিগার করার সময় আপনি সেই JSON যোগ করেন)। একবার এই অ্যাকশনটি OAuth টোকেন পুনরুদ্ধার করলে, আপনার API প্রক্সি Google API-গুলিতে কল করার জন্য টোকেনটি ব্যবহার করতে পারে, কার্যকরভাবে Google পরিষেবা অ্যাকাউন্টের পক্ষ থেকে API-গুলিকে কল করতে পারে।
Google ক্লাউড API-তে অ্যাক্সেস Google API-এর জন্য OAuth 2.0 স্কোপে তালিকাভুক্ত স্কোপের মাধ্যমে ফিল্টার করা হয়।
OAuth 2.0 এর সাথে সার্ভার-টু-সার্ভার ইন্টারঅ্যাকশন সম্পর্কে আরও জানতে, সার্ভার-টু-সার্ভার অ্যাপ্লিকেশনের জন্য OAuth 2.0 ব্যবহার দেখুন।
বাক্য গঠন
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"scope1",
"scope2"
]
}]]></Input>
উদাহরণ
নিম্নলিখিত উদাহরণে, এক্সটেনশনের getOauth2AccessToken অ্যাকশন ক্লাউড ট্রান্সলেশন API- এর অনুরোধে ব্যবহারের জন্য একটি টোকেন পুনরুদ্ধার করে।
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | আদর্শ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|---|
| সুযোগ | OAuth 2.0 স্কোপের একটি অ্যারে। স্কোপ সম্পর্কে আরও জানতে, Google API-এর জন্য OAuth 2.0 স্কোপ দেখুন। | অ্যারে | ["https://www.googleapis.com/auth/cloud-platform"] , যা পরিষেবা অ্যাকাউন্টের অ্যাক্সেস আছে এমন সমস্ত API-তে অ্যাক্সেস দেয়। | না। |
প্রতিক্রিয়া
অ্যাক্সেস টোকেন, এর ধরণ এবং এর মেয়াদ শেষ হওয়ার তারিখ নিম্নলিখিত ফর্মে থাকা একটি বস্তু:
{
"accessToken": "ewogICJ0eXB...C5jb20iCn0K",
"token_type": "Bearer",
"expiresInSec": 3600
}
প্রতিক্রিয়া বৈশিষ্ট্য
| প্যারামিটার | বিবরণ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|
| অ্যাক্সেস টোকেন | OAuth 2.0 অ্যাক্সেস টোকেন। | কোনটিই নয় | হাঁ |
| টোকেনটাইপ | টোকেনের ধরণ। | বহনকারী | হাঁ |
| মেয়াদ শেষ হয়InSec | টোকেনের মেয়াদ শেষ হতে কত সেকেন্ড বাকি। | ৩৬০০ | হাঁ |
জেডব্লিউটিএ্যাকসেসটোকেন পান
একটি JSON ওয়েব টোকেন (JWT) অ্যাক্সেস টোকেন পায়। আপনি যে API কল করতে চান তার Google APIs GitHub রিপোজিটরিতে প্রকাশিত একটি পরিষেবা সংজ্ঞা থাকলে, আপনি এই টোকেনটি Google API গুলির সাথে প্রমাণীকরণের জন্য ব্যবহার করতে পারেন।
কিছু গুগল এপিআই ব্যবহার করে, আপনি OAuth 2.0 অ্যাক্সেস টোকেনের পরিবর্তে সরাসরি স্বাক্ষরিত JWT ব্যবহার করে অনুমোদিত এপিআই কল করতে পারেন। যখন এটি সম্ভব হয়, তখন API কল করার আগে গুগলের অনুমোদন সার্ভারে নেটওয়ার্ক অনুরোধ করার প্রয়োজন এড়াতে পারেন।
JWT অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণ সম্পর্কে আরও জানতে, সার্ভার থেকে সার্ভার অ্যাপ্লিকেশনের জন্য OAuth 2.0 ব্যবহার দেখুন।
বাক্য গঠন
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "audience"
}]]></Input>
উদাহরণ: ক্লাউড ফাংশন URL
নিম্নলিখিত উদাহরণে, এক্সটেনশনের getOauth2AccessToken অ্যাকশন ক্লাউড ট্রান্সলেশন API- এর অনুরোধে ব্যবহারের জন্য একটি টোকেন পুনরুদ্ধার করে।
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME"
}]]></Input>
উদাহরণ: ক্লাউড IAP-সুরক্ষিত ক্লায়েন্ট আইডি
নিম্নলিখিত উদাহরণে, এক্সটেনশনের getOauth2AccessToken অ্যাকশন ক্লাউড ট্রান্সলেশন API- এর অনুরোধে ব্যবহারের জন্য একটি টোকেন পুনরুদ্ধার করে।
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "Cloud-IAP-secured-client-ID"
}]]></Input>
অনুরোধের প্যারামিটার
| প্যারামিটার | বিবরণ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|
| শ্রোতা | টোকেনের প্রাপক। এর মধ্যে একটি ক্লাউড IAP-সুরক্ষিত ক্লায়েন্ট আইডি, একটি ক্লাউড ফাংশন URL অন্তর্ভুক্ত থাকতে পারে | কোনটিই নয় | হাঁ |
প্রতিক্রিয়া
{
"accessToken": "token",
"tokenType": "Bearer",
"expiresInSec": 3600
}
প্রতিক্রিয়া বৈশিষ্ট্য
| প্যারামিটার | বিবরণ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|
| অ্যাক্সেস টোকেন | অ্যাক্সেস টোকেন। | কোনটিই নয় | হাঁ |
| টোকেনটাইপ | টোকেনের ধরণ। | বহনকারী | হাঁ |
| মেয়াদ শেষ হয়InSec | কয়েক সেকেন্ডের মধ্যে মেয়াদ শেষ। | ৩৬০০ | হাঁ |
কনফিগারেশন রেফারেন্স
API প্রক্সিতে ব্যবহারের জন্য এই এক্সটেনশনটি কনফিগার এবং স্থাপন করার সময় নিম্নলিখিতগুলি ব্যবহার করুন। Apigee কনসোল ব্যবহার করে একটি এক্সটেনশন কনফিগার করার পদক্ষেপগুলির জন্য, একটি এক্সটেনশন যোগ করা এবং কনফিগার করা দেখুন।
সাধারণ এক্সটেনশন বৈশিষ্ট্য
নিম্নলিখিত বৈশিষ্ট্যগুলি প্রতিটি এক্সটেনশনের জন্য উপস্থিত রয়েছে।
| সম্পত্তি | বর্ণনা | ডিফল্ট | প্রয়োজন |
|---|---|---|---|
name | আপনি এক্সটেনশনের এই কনফিগারেশনের নাম দিন। | কোনোটিই নয় | হ্যাঁ |
packageName | Apigee Edge দ্বারা প্রদত্ত এক্সটেনশন প্যাকেজের নাম। | কোনোটিই নয় | হ্যাঁ |
version | যে এক্সটেনশন প্যাকেজ থেকে আপনি একটি এক্সটেনশন কনফিগার করছেন তার সংস্করণ নম্বর। | কোনোটিই নয় | হ্যাঁ |
configuration | আপনি যে এক্সটেনশনটি যোগ করছেন তার জন্য নির্দিষ্ট কনফিগারেশন মান। এই এক্সটেনশন প্যাকেজের বৈশিষ্ট্য দেখুন | কোনোটিই নয় | হ্যাঁ |
এই এক্সটেনশন প্যাকেজের বৈশিষ্ট্যাবলী
এই এক্সটেনশনের জন্য নির্দিষ্ট নিম্নলিখিত কনফিগারেশন বৈশিষ্ট্যের জন্য মান নির্দিষ্ট করুন।
| সম্পত্তি | বিবরণ | ডিফল্ট | প্রয়োজনীয় |
|---|---|---|---|
| শংসাপত্র | Apigee Edge কনসোলে প্রবেশ করালে, এটি আপনার পরিষেবা অ্যাকাউন্ট কী JSON ফাইলের সম্পূর্ণ বিষয়বস্তু। ম্যানেজমেন্ট API ব্যবহার করে পাঠানো হলে, এটি সম্পূর্ণ পরিষেবা অ্যাকাউন্ট কী JSON ফাইল থেকে তৈরি একটি base64-এনকোডেড মান। | কোনটিই নয় | হাঁ |