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