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