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