আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
কী
OAuthV2 হল OAuth 2.0 গ্র্যান্টের ধরন সংক্রান্ত অপারেশন পারফর্ম করার জন্য একটি বহু-মুখী নীতি। Apigee Edge-এ OAuth 2.0 এন্ডপয়েন্ট কনফিগার করার জন্য এটি হল প্রাথমিক নীতি।
পরামর্শ: আপনি যদি Apigee Edge-এ OAuth সম্পর্কে আরও জানতে চান, তাহলে OAuth হোম পেজ দেখুন। এটি রিসোর্স, স্যাম্পেল, ভিডিও ও আরও অনেক কিছুর লিঙ্ক প্রদান করে। কোনও কার্যকরী অ্যাপ্লিকেশনে এই নীতি কীভাবে ব্যবহার করা হয় তা ভালোভাবে বুঝতে GitHub-এ উন্নত OAuth স্যাম্পেল দেখুন।
নমুনা
VerifyAccessToken
VerifyAccessToken
এই OAuthV2 নীতি কনফিগারেশন (VerifyAccessToken অপারেশন সহ) যাচাই করে যে Apigee Edge-এ জমা দেওয়া অ্যাক্সেস টোকেনটি সঠিক। এই নীতি অপারেশন ট্রিগার করা হলে, Edge অনুরোধে একটি বৈধ অ্যাক্সেস টোকেন খোঁজে। অ্যাক্সেস টোকেন সঠিক হলে, অনুরোধটি প্রসেস করার অনুমতি দেওয়া হয়। এটি ভুল হলে, সমস্ত প্রসেসিং বন্ধ হয়ে যায় এবং উত্তরে একটি সমস্যা দেখানো হয়।
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-2">
<DisplayName>OAuth v2.0 2</DisplayName>
<Operation>VerifyAccessToken</Operation>
<AccessTokenPrefix>Bearer</AccessTokenPrefix> <!-- Optional, default is Bearer -->
</OAuthV2>মনে রাখবেন: শুধুমাত্র OAuth 2.0 বিয়ারার টোকেন কাজ করে। মেসেজ অথেন্টিকেশন কোড (MAC) টোকেন কাজ করে না।
যেমন:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
ডিফল্ট হিসেবে, Edge Bearer প্রিফিক্স সহ Authorization হেডারে অ্যাক্সেস টোকেন গ্রহণ করে।
আপনি <AccessToken>
এলিমেন্ট ব্যবহার করে এই ডিফল্ট পরিবর্তন করতে পারবেন।
GenerateAccessToken
অ্যাক্সেস টোকেন তৈরি করা
কাজ করে এমন প্রতিটি গ্র্যান্টের ধরনের জন্য কীভাবে অ্যাক্সেস টোকেন অনুরোধ করতে হয় তা দেখানো উদাহরণের জন্য, অ্যাক্সেস টোকেন ও অনুমোদন কোড অনুরোধ করা দেখুন। এইসব অপারেশনের উদাহরণ টপিকে অন্তর্ভুক্ত করা হয়েছে:
GenerateAuthorizationCode
অনুমোদন কোড জেনারেট করা
অনুমোদন কোডের অনুরোধ কীভাবে করতে হয় তার উদাহরণ দেখতে, অনুমোদন কোডের অনুরোধ করা দেখুন।
RefreshAccessToken
অ্যাক্সেস টোকেন রিফ্রেশ করা
রিফ্রেশ টোকেন ব্যবহার করে কীভাবে অ্যাক্সেস টোকেনের অনুরোধ করতে হয় তার উদাহরণ দেখতে, অ্যাক্সেস টোকেন রিফ্রেশ করা দেখুন।
উত্তর ফ্লো টোকেন
রেসপন্স ফ্লোতে অ্যাক্সেস টোকেন তৈরি করা
কখনও কখনও, আপনাকে রেসপন্স ফ্লোতে অ্যাক্সেস টোকেন তৈরি করতে হতে পারে। যেমন, আপনি ব্যাকএন্ড পরিষেবায় করা কিছু কাস্টম যাচাইকরণের উত্তরে এটি করতে পারেন। এই উদাহরণে, ব্যবহারের ক্ষেত্রে অ্যাক্সেস টোকেন ও রিফ্রেশ টোকেন, দুটিই প্রয়োজন। এর ফলে ইমপ্লিসিট গ্র্যান্ট টাইপ বাতিল হয়ে যায়। এই ক্ষেত্রে, টোকেন তৈরি করার জন্য আমরা পাসওয়ার্ড গ্র্যান্টের ধরন ব্যবহার করব। আপনি দেখতে পাবেন যে, এটি কাজ করানোর কৌশল হল JavaScript নীতি সহ একটি অনুমোদনের অনুরোধ হেডার পাস করা।
প্রথমে, নমুনা নীতিটি দেখে নেওয়া যাক:
<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken"> <Operation>GenerateAccessToken</Operation> <AppEndUser>Doe</AppEndUser> <UserName>jdoe</UserName> <PassWord>jdoe</PassWord> <GrantType>grant_type</GrantType> <ClientId>a_valid_client_id</ClientId> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> </OAuthV2>
আপনি যদি এই নীতিটি রেসপন্স ফ্লোতে রাখেন, তাহলে এটি 401 অননুমোদিত সমস্যা সহ ব্যর্থ হবে এমনকি নীতিতে সঠিক লগ-ইন প্যারামিটার নির্দিষ্ট করা থাকলেও। এই সমস্যার সমাধান করতে, আপনাকে একটি অনুমোদন সংক্রান্ত অনুরোধ হেডার সেট করতে হবে।
Authorization হেডারটিতে Base64-এনকোড করা client_id:client_secret সহ একটি প্রাথমিক অ্যাক্সেস স্কিম থাকতে হবে।
আপনি OAuthV2 নীতির ঠিক আগে JavaScript নীতি যোগ করে এই হেডার যোগ করতে পারেন, যেমন এখানে দেখানো হয়েছে। "local_clientid" এবং "local_secret" ভেরিয়েবল আগে থেকেই সেট করা থাকতে হবে এবং ফ্লোতে উপলভ্য থাকতে হবে:
var client_id = context.getVariable("local_clientid"); var client_secret = context.getVariable("local_secret"); context.setVariable("request.header.Authorization","Basic "+CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1 .parse(client_id + ':' + client_secret)));
এছাড়াও, "প্রাথমিক যাচাইকরণ ক্রেডেনশিয়াল এনকোড করা" দেখুন।
এলিমেন্ট রেফারেন্স
নীতি সংক্রান্ত রেফারেন্সে OAuthV2 নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করা আছে।
নিচে দেখানো নমুনা নীতিটি সম্ভাব্য অনেক কনফিগারেশনের মধ্যে একটি। এই নমুনাতে GenerateAccessToken অপারেশনের জন্য কনফিগার করা OAuthV2 নীতি দেখানো হয়েছে। এতে প্রয়োজনীয় ও ঐচ্ছিক এলিমেন্ট অন্তর্ভুক্ত। বিবরণের জন্য এই বিভাগে এলিমেন্টের বিবরণ দেখুন।
<OAuthV2 name="GenerateAccessToken"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in millseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
<OAuthV2> অ্যাট্রিবিউট
<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<AccessToken> এলিমেন্ট
<AccessToken>request.header.access_token</AccessToken>
সাধারণত, VerifyAccessToken-এর প্রত্যাশা হল অ্যাক্সেস টোকেনটি Authorization
হেডারে পাঠানো হবে।
এই এলিমেন্ট ব্যবহার করে আপনি সেই ডিফল্ট পরিবর্তন করতে পারবেন। যেমন, request.queryparam.access_token থেকে বোঝা যায় যে অ্যাক্সেস টোকেনটি
access_token নামের কোয়েরি প্যারামিটার হিসেবে
উপস্থিত থাকতে হবে।
<AccessToken>request.header.access_token</AccessToken> নির্দিষ্ট করা হয়েছে এমন
উদাহরণ:
curl https://myorg-myenv.apigee.net/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"
<AccessToken>request.queryparam.access_token</AccessToken> নির্দিষ্ট করা আছে
এমন উদাহরণ:
curl "https://myorg-myenv.apigee.net/oauth2/validate?access_token:Rft3dqrs56Blirls56a"
|
ডিফল্ট: |
প্রযোজ্য নয় |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| অপারেশনের সাথে ব্যবহার করা হয়: |
|
<AccessTokenPrefix> এলিমেন্ট
<AccessTokenPrefix>Bearer</AccessTokenPrefix>
সাধারণত, VerifyAccessToken-এর প্রত্যাশা হল যে অ্যাক্সেস টোকেনটি একটি Authorization header-এ Bearer টোকেন হিসেবে পাঠানো হবে। যেমন:
-H "Authorization: Bearer Rft3dqrs56Blirls56a"
বর্তমানে, শুধু Bearer প্রিফিক্স কাজ করে।
|
ডিফল্ট: |
বেয়ারার |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: |
বেয়ারার |
| অপারেশনের সাথে ব্যবহার করা হয়: |
|
<AppEndUser> এলিমেন্ট
<AppEndUser>request.queryparam.app_enduser</AppEndUser>
যেসব ক্ষেত্রে অ্যাপের শেষ ব্যবহারকারীর আইডি অনুমোদন সার্ভারে পাঠাতে হবে, সেখানে এই এলিমেন্ট আপনাকে নির্দিষ্ট করতে দেয় যে Edge কোথায় শেষ ব্যবহারকারীর আইডি খুঁজবে। যেমন, এটি কোয়েরি প্যারামিটার হিসেবে বা HTTP হেডার হিসেবে পাঠানো হতে পারে।
যেমন, request.queryparam.app_enduser থেকে বোঝা যায় যে
AppEndUser-কে কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন
?app_enduser=ntesla@theramin.com। HTTP
হেডারে AppEndUser-এর প্রয়োজন হলে, যেমন, এই মানটি request.header.app_enduser হিসেবে সেট করুন।
এই সেটিং প্রদান করলে, আপনি অ্যাক্সেস টোকেনে অ্যাপের ব্যবহারকারীর আইডি অন্তর্ভুক্ত করতে পারবেন। আপনি যদি ব্যবহারকারীর আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ বা প্রত্যাহার করতে চান, তাহলে এই ফিচারটি কাজে লাগবে। আরও তথ্যের জন্য, ব্যবহারকারীর আইডি, অ্যাপ আইডি বা দুটিই ব্যবহার করে OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ করা ও প্রত্যাহার করা চালু করুন দেখুন।
|
ডিফল্ট: |
প্রযোজ্য নয় |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: |
রানটাইমে নীতির অ্যাক্সেসযোগ্য যেকোনও ফ্লো ভেরিয়েবল। |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<Attributes/Attribute>
<Attributes> <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute> <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute> </Attributes>
অ্যাক্সেস টোকেন বা অথরাইজেশন কোডে কাস্টম অ্যাট্রিবিউট যোগ করতে এই এলিমেন্ট ব্যবহার করুন। যেমন, আপনি হয়ত অ্যাক্সেস টোকেনে ব্যবহারকারীর আইডি বা সেশন শনাক্তকারী এম্বেড করতে চান যা রানটাইমে এক্সট্র্যাক্ট ও চেক করা যেতে পারে।
এই এলিমেন্ট আপনাকে ফ্লো ভেরিয়েবলে বা লিটেরাল স্ট্রিং থেকে একটি ভ্যালু নির্দিষ্ট করতে দেয়। আপনি ভেরিয়েবল ও স্ট্রিং, দু'টিই উল্লেখ করলে, ফ্লো ভেরিয়েবলে উল্লেখ করা ভ্যালু ব্যবহার করা হয়। যদি ভেরিয়েবল সমাধান করা না যায়, তাহলে স্ট্রিংটি ডিফল্ট হিসেবে থাকবে।
এই এলিমেন্ট ব্যবহার করা সম্পর্কে আরও জানতে, টোকেন কাস্টমাইজ করা এবং অনুমোদন কোড দেখুন।
উত্তরে কাস্টম অ্যাট্রিবিউট দেখানো বা লুকানো
মনে রাখবেন, আপনি যদি এই নীতির GenerateResponse এলিমেন্টকে true হিসেবে সেট করেন, তাহলে টোকেনের সম্পূর্ণ JSON উপস্থাপনা রেসপন্সে ফেরত দেওয়া হবে, এর মধ্যে আপনার সেট করা যেকোনও কাস্টম অ্যাট্রিবিউট অন্তর্ভুক্ত থাকবে। কিছু ক্ষেত্রে, আপনি হয়ত উত্তরের মধ্যে কিছু বা সব কাস্টম অ্যাট্রিবিউট লুকাতে চাইবেন যাতে সেগুলি ক্লায়েন্ট অ্যাপে দেখা না যায়।
সাধারণত, কাস্টম অ্যাট্রিবিউট উত্তর হিসেবে দেখানো হয়। আপনি সেগুলি লুকাতে চাইলে, display প্যারামিটারকে false হিসেবে সেট করতে পারেন। যেমন:
<Attributes>
<Attribute name="employee_id" ref="employee.id" display="false"/>
<Attribute name="employee_name" ref="employee.name" display="false"/>
</Attributes>display অ্যাট্রিবিউটের ভ্যালু সেভ করা
হয়নি। ধরা যাক, আপনি কাস্টম অ্যাট্রিবিউট সহ একটি অ্যাক্সেস টোকেন জেনারেট করেছেন যা আপনি জেনারেট করা উত্তরে
লুকিয়ে রাখতে চান। display=false সেট করলে সেই লক্ষ্য পূরণ হয়। তবে, রিফ্রেশ টোকেন ব্যবহার করে পরে কোনও নতুন
অ্যাক্সেস টোকেন তৈরি করা হলে, অ্যাক্সেস টোকেনের
আসল কাস্টম অ্যাট্রিবিউট রিফ্রেশ টোকেনের উত্তরে দেখা যাবে। এর কারণ হল, Edge মনে রাখে না যে
জেনারেট অ্যাক্সেস টোকেন নীতিতে display অ্যাট্রিবিউটটি মূলত false হিসেবে সেট করা হয়েছিল--কাস্টম
অ্যাট্রিবিউটটি অ্যাক্সেস টোকেনের মেটাডেটার অংশ।
আপনি যদি কোনও অনুমোদনের কোডে কাস্টম অ্যাট্রিবিউট যোগ করেন, তাহলে একই আচরণ দেখতে পাবেন--যখন সেই কোড ব্যবহার করে কোনও অ্যাক্সেস টোকেন তৈরি করা হয়, তখন সেই কাস্টম অ্যাট্রিবিউটগুলি অ্যাক্সেস টোকেন উত্তরে দেখা যাবে। আবারও বলছি, এটি হয়ত আপনার উদ্দেশ্য নয়।
এইসব ক্ষেত্রে কাস্টম অ্যাট্রিবিউট লুকাতে, আপনার কাছে এইসব বিকল্প আছে:
- রিফ্রেশ টোকেন নীতিতে কাস্টম অ্যাট্রিবিউট স্পষ্টভাবে রিসেট করুন এবং সেগুলির ডিসপ্লে false হিসেবে সেট করুন। এই ক্ষেত্রে, GetOAuthV2Info নীতি ব্যবহার করে আপনাকে আসল অ্যাক্সেস টোকেন থেকে আসল কাস্টম ভ্যালু রিট্রিভ করতে হতে পারে।
- উত্তরে দেখতে চান না এমন কাস্টম অ্যাট্রিবিউট ম্যানুয়ালি এক্সট্র্যাক্ট করতে পোস্টপ্রসেসিং জাভাস্ক্রিপ্ট নীতি ব্যবহার করুন।
এছাড়াও, কাস্টমাইজ করা টোকেন ও অনুমোদন কোড দেখুন।
|
ডিফল্ট: |
|
|
উপস্থিতি: |
ঐচ্ছিক |
| সঠিক মান: |
|
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<ClientId> এলিমেন্ট
<ClientId>request.formparam.client_id</ClientId>
অনেক ক্ষেত্রে, ক্লায়েন্ট অ্যাপকে অবশ্যই ক্লায়েন্ট আইডি অনুমোদনের সার্ভারে পাঠাতে হবে। এই এলিমেন্ট
নির্দিষ্ট করে যে Apigee-কে ফ্লো ভেরিয়েবলে ক্লায়েন্ট আইডি
request.formparam.client_idখুঁজতে হবে। ClientId
কোনও ভেরিয়েবলে সেট করা যায় না।
এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন
কোডের জন্য অনুরোধ করা দেখুন।
|
ডিফল্ট: |
request.formparam.client_id (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | ফ্লো ভেরিয়েবল: request.formparam.client_id |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
GenerateAuthorizationCode অপারেশনের সাথেও ব্যবহার করা যেতে পারে। |
<Code> এলিমেন্ট
<Code>request.queryparam.code</Code>
অনুমোদন গ্রান্টের ধরন সংক্রান্ত ফ্লোতে, ক্লায়েন্টকে অবশ্যই অনুমোদন সার্ভারে (Apigee Edge) একটি অনুমোদন কোড জমা দিতে হবে। এই এলিমেন্ট আপনাকে নির্দিষ্ট করতে দেয় যে Edge কোথায় অনুমোদন কোড খুঁজবে। যেমন, এটি কোয়েরি প্যারামিটার, HTTP হেডার বা ফর্ম প্যারামিটার (ডিফল্ট) হিসেবে পাঠানো হতে পারে।
ভেরিয়েবল, request.queryparam.auth_code থেকে বোঝা যায় যে
অনুমোদন কোডটি কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন,
?auth_code=AfGlvs9। HTTP
হেডারে অনুমোদন কোড প্রয়োজন হলে, যেমন, এই ভ্যালু request.header.auth_code হিসেবে সেট করুন। এছাড়াও, দেখুন
অ্যাক্সেস টোকেন ও
অনুমোদন কোডের অনুরোধ করা।
|
ডিফল্ট: |
request.formparam.code (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | রানটাইমে নীতির অ্যাক্সেস থাকা যেকোনও ফ্লো ভেরিয়েবল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: | authorization_code |
<ExpiresIn> এলিমেন্ট
<ExpiresIn>10000</ExpiresIn>
মিলি সেকেন্ডে অ্যাক্সেস টোকেন ও অনুমোদন কোডের মেয়াদ শেষ হওয়ার সময় প্রয়োগ করে। (রিফ্রেশ
টোকেনের জন্য, <RefreshTokenExpiresIn> ব্যবহার করুন।) মেয়াদ শেষ হওয়ার সময় হল
সিস্টেম-জেনারেটেড ভ্যালু এবং <ExpiresIn> ভ্যালুর যোগফল। যদি
<ExpiresIn> -1 হিসেবে সেট করা থাকে, তাহলে OAuth অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার সর্বোচ্চ সময়সীমা অনুযায়ী টোকেন বা কোডের মেয়াদ শেষ হয়ে যায়।
<ExpiresIn> উল্লেখ করা না থাকলে, সিস্টেম লেভেলে কনফিগার করা একটি
ডিফল্ট ভ্যালু প্রয়োগ করে।
এছাড়াও, হার্ড-কোডেড, ডিফল্ট ভ্যালু ব্যবহার করে অথবা
ফ্লো ভেরিয়েবল রেফারেন্স করে রানটাইমে মেয়াদ শেষ হওয়ার সময় সেট করা যেতে পারে। যেমন, আপনি একটি কী ভ্যালু
ম্যাপে টোকেনের মেয়াদ শেষ হওয়ার ভ্যালু স্টোর করতে, সেটি রিট্রিভ করতে, কোনও ভেরিয়েবলে অ্যাসাইন করতে এবং নীতিতে রেফারেন্স করতে পারবেন। যেমন,
kvm.oauth.expires_in.
পাবলিক ক্লাউডের জন্য Apigee Edge-এর মাধ্যমে, Edge, এন্টিটি অ্যাক্সেস করার পরে কমপক্ষে ১৮০ সেকেন্ডের জন্য নিম্নলিখিত এন্টিটিগুলিকে ক্যাশেতে রাখে।
- OAuth অ্যাক্সেস টোকেন। এর অর্থ হল, বাতিল করা টোকেন এখনও সর্বাধিক তিন মিনিট কাজ করতে পারে, যতক্ষণ না এর ক্যাশে সীমা শেষ হয়ে যায়।
- কী ম্যানেজমেন্ট সার্ভিস (KMS) এন্টিটি (অ্যাপ, ডেভেলপার, API প্রোডাক্ট)।
- OAuth টোকেন ও KMS এন্টিটিতে কাস্টম অ্যাট্রিবিউট।
নিম্নলিখিত স্তবকে একটি ফ্লো ভেরিয়েবল এবং একটি ডিফল্ট ভ্যালুও নির্দিষ্ট করা হয়েছে। মনে রাখবেন, নির্দিষ্ট ডিফল্ট ভ্যালুর চেয়ে ফ্লো ভেরিয়েবল ভ্যালুকে বেশি প্রাধান্য দেওয়া হয়।
<ExpiresIn ref="kvm.oauth.expires_in">
3600000 <!--default value in milliseconds-->
</ExpiresIn>Edge-এ টোকেন তৈরি হওয়ার পরে সেটি জোর করে এক্সপায়ার করার কোনও সুবিধা নেই। আপনাকে যদি টোকেনের মেয়াদ শেষ করতে বাধ্য করতে হয় (যেমন, কোনও শর্তের উপর ভিত্তি করে), তাহলে একটি সম্ভাব্য সমাধান হল এই Apigee কমিউনিটি পোস্টে বর্ণিত।
সাধারণত, মেয়াদ শেষ হয়ে যাওয়া অ্যাক্সেস টোকেন, মেয়াদ শেষ হওয়ার ৩ দিন পরে Apigee Edge সিস্টেম থেকে অটোমেটিক মুছে দেওয়া হয়। এছাড়াও, অ্যাক্সেস টোকেন সরিয়ে দেওয়া দেখুন
প্রাইভেট ক্লাউড: প্রাইভেট ক্লাউডের জন্য Edge ইনস্টলেশনের ক্ষেত্রে, ডিফল্ট
মান conf_keymanagement_oauth_auth_code_expiry_time_in_millis প্রপার্টির মাধ্যমে সেট করা হয়।
এই প্রপার্টি সেট করতে:
- এডিটরে
message-processor.propertiesফাইল খুলুন। ফাইলটি না থাকলে, এটি তৈরি করুন:vi /opt/apigee/customer/application/message-processor.properties
- ইচ্ছা অনুযায়ী প্রপার্টি সেট করুন:
conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
- প্রপার্টি ফাইলের মালিক "apigee" ব্যবহারকারী কিনা তা নিশ্চিত করুন:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- মেসেজ প্রসেসর রিস্টার্ট করুন।
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
|
ডিফল্ট: |
উল্লেখ করা না থাকলে, সিস্টেম লেভেলে কনফিগার করা একটি ডিফল্ট ভ্যালু সিস্টেম প্রয়োগ করে। |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
| সঠিক মান: |
|
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
এছাড়াও, GenerateAuthorizationCode অপারেশনের সাথে ব্যবহার করা হয়। |
<ExternalAccessToken> এলিমেন্ট
<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>
Apigee Edge-কে বলে যে এক্সটার্নাল অ্যাক্সেস টোকেন (Apigee Edge-এর তৈরি করা নয় এমন অ্যাক্সেস টোকেন) কোথায় খুঁজে পেতে হবে।
ভেরিয়েবল request.queryparam.external_access_token থেকে বোঝা যায় যে
এক্সটার্নাল অ্যাক্সেস টোকেন কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন,
?external_access_token=12345678। HTTP হেডার থেকে এক্সটার্নাল অ্যাক্সেস টোকেন
প্রয়োজন হলে, এই ভ্যালু
request.header.external_access_token হিসেবে সেট করুন। এছাড়াও থার্ড-পার্টি OAuth
টোকেন ব্যবহার করা দেখুন।
<ExternalAuthorization> এলিমেন্ট
<ExternalAuthorization>true</ExternalAuthorization>
এই এলিমেন্টটি মিথ্যা হলে বা না থাকলে, Edge, Apigee Edge যাচাইকরণ স্টোরের বিরুদ্ধে client_id এবং client_secret সাধারণভাবে যাচাই করে। আপনি থার্ড-পার্টি OAuth টোকেন নিয়ে কাজ করতে চাইলে এই এলিমেন্ট ব্যবহার করুন। এই এলিমেন্ট ব্যবহার করার ব্যাপারে আরও জানতে, থার্ড-পার্টি OAuth টোকেন ব্যবহার করা দেখুন।
|
ডিফল্ট: |
মিথ্যা |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | বুলিয়ান |
| সঠিক মান: | ঠিক বা ভুল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<ExternalAuthorizationCode> এলিমেন্ট
<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>
Apigee Edge-কে জানায় যে কোথায় এক্সটার্নাল অথ কোড (Apigee Edge-এর তৈরি করা নয় এমন অথ কোড) খুঁজে পেতে হবে।
ভেরিয়েবল request.queryparam.external_auth_code থেকে বোঝা যায় যে
এক্সটার্নাল অথ কোড কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন,
?external_auth_code=12345678। HTTP হেডার
কোডে
এক্সটার্নাল অথেন্টিকেশন
কোড প্রয়োজন হলে, এই ভ্যালু request.header.external_auth_code হিসেবে সেট করুন। এছাড়াও থার্ড-পার্টি OAuth
টোকেন ব্যবহার করা দেখুন।
<ExternalRefreshToken> এলিমেন্ট
<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>
Apigee Edge-কে বলে যে কোথায় এক্সটার্নাল রিফ্রেশ টোকেন (Apigee Edge-এর তৈরি করা নয় এমন রিফ্রেশ টোকেন) খুঁজতে হবে।
ভেরিয়েবল request.queryparam.external_refresh_token থেকে বোঝা যায় যে
এক্সটার্নাল রিফ্রেশ টোকেন কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন,
?external_refresh_token=12345678। HTTP হেডার থেকে এক্সটার্নাল রিফ্রেশ টোকেন
প্রয়োজন হলে, এই ভ্যালু
request.header.external_refresh_token হিসেবে সেট করুন। এছাড়াও থার্ড-পার্টি OAuth
টোকেন ব্যবহার করা দেখুন।
<GenerateResponse> এলিমেন্ট
<GenerateResponse enabled='true'/>
true হিসেবে সেট করা থাকলে, নীতিটি একটি উত্তর তৈরি করে ফেরত দেয়। যেমন, GenerateAccessToken-এর
জন্য, উত্তরটি এই ধরনের হতে পারে:
{ "issued_at" : "1467841035013", "scope" : "read", "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930", "refresh_token_issued_at" : "1467841035013", "status" : "approved", "refresh_token_status" : "approved", "api_product_list" : "[Product1, nhl_product]", "expires_in" : "1799", "developer.email" : "edward@slalom.org", "token_type" : "BearerToken", "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ", "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj", "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a", "organization_name" : "cerruti", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
false হলে, কোনও উত্তর পাঠানো হয় না। পরিবর্তে, নীতির ফাংশনের সাথে সম্পর্কিত মান সহ ফ্লো ভেরিয়েবলের একটি সেট
পপুলেট করা হয়। যেমন, oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code নামের একটি ফ্লো ভেরিয়েবল নতুন
তৈরি করা অথরাইজেশন কোড দিয়ে পূরণ করা হয়। মনে রাখবেন, উত্তরের মধ্যে expires_in-এর মেয়াদ সেকেন্ডে দেখানো হয়।
|
ডিফল্ট: |
মিথ্যা |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | ঠিক বা ভুল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<GenerateErrorResponse> এলিমেন্ট
<GenerateErrorResponse enabled='true'/>
true হিসেবে সেট করা থাকলে, ContinueOnError অ্যাট্রিবিউট true হিসেবে সেট করা থাকলে,
নীতিটি একটি উত্তর তৈরি করে ফেরত দেয়। false (ডিফল্ট) হলে, কোনও
উত্তর পাঠানো হয় না। পরিবর্তে, ফ্লো ভেরিয়েবলের একটি সেট, নীতির ফাংশন সম্পর্কিত মান দিয়ে পূরণ করা হয়।
|
ডিফল্ট: |
মিথ্যা |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | ঠিক বা ভুল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<GrantType>
<GrantType>request.queryparam.grant_type</GrantType>
অনুরোধে পাস করা গ্রান্টের ধরন সংক্রান্ত প্যারামিটার কোথায় পাওয়া যাবে তা নীতি জানায়। OAuth 2.0 স্পেসিফিকেশন অনুযায়ী, অ্যাক্সেস টোকেন ও অনুমোদন কোডের অনুরোধের সাথে গ্রান্টের ধরন অবশ্যই দিতে হবে। ভেরিয়েবলটি হেডার, কোয়েরি প্যারামিটার বা ফর্ম প্যারামিটার হতে পারে (ডিফল্ট)।
যেমন, request.queryparam.grant_type থেকে বোঝা যায় যে পাসওয়ার্ড
কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন, ?grant_type=password।
HTTP হেডারে গ্র্যান্টের ধরন প্রয়োজন হলে, যেমন, এই ভ্যালু
request.header.grant_type হিসেবে সেট করুন। এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন
কোডের জন্য অনুরোধ করা দেখুন।
|
ডিফল্ট: |
request.formparam.grant_type (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | উপরে ব্যাখ্যা করা হয়েছে এমন একটি ভেরিয়েবল। |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<Operation> এলিমেন্ট
<Operation>GenerateAuthorizationCode</Operation>
নীতি দ্বারা পরিচালিত OAuth 2.0 অপারেশন।
|
ডিফল্ট: |
|
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: |
|
<PassWord> এলিমেন্ট
<PassWord>request.queryparam.password</PassWord>
এই এলিমেন্ট শুধুমাত্র পাসওয়ার্ড গ্র্যান্ট টাইপের সাথে ব্যবহার করা হয়। পাসওয়ার্ড
গ্র্যান্ট টাইপের ক্ষেত্রে, ব্যবহারকারীর ক্রেডেনশিয়াল (পাসওয়ার্ড ও ইউজারনেম) অবশ্যই
OAuthV2 নীতির জন্য উপলভ্য করতে হবে। <PassWord> ও <UserName> এলিমেন্টগুলি
ভেরিয়েবেল নির্দিষ্ট করতে ব্যবহার করা হয়, যেখানে Edge এইসব ভ্যালু খুঁজে পেতে পারে। এইসব এলিমেন্ট নির্দিষ্ট করা না থাকলে,
নীতিটি username
এবং password নামের ফর্ম প্যারামিটারে (ডিফল্ট হিসেবে) ভ্যালু খুঁজে পাবে বলে আশা করা হয়। মান খুঁজে না পাওয়া গেলে, নীতিটি একটি সমস্যা দেখায়। আপনি
<PassWord> ও <UserName> এলিমেন্ট ব্যবহার করে এমন যেকোনও
ফ্লো ভেরিয়েবল রেফারেন্স করতে পারবেন যাতে ক্রেডেনশিয়াল আছে।
যেমন, আপনি কোয়েরি প্যারামিটার ব্যবহার করে টোকেন অনুরোধে পাসওয়ার্ড পাস করতে পারেন এবং
এইভাবে এলিমেন্ট সেট করতে পারেন:
<PassWord>request.queryparam.password</PassWord>. HTTP হেডার
পাসওয়ার্ডের প্রয়োজন হলে, এই ভ্যালু request.header.password হিসেবে সেট করুন।
OAuthV2 নীতি এইসব ক্রেডেনশিয়াল ভ্যালু নিয়ে আর কিছু করে না; Edge শুধু যাচাই করে দেখে যে সেগুলি আছে কিনা। টোকেন জেনারেশন নীতি কার্যকর করার আগে, API ডেভেলপারকে অনুরোধ করা ভ্যালুগুলি পুনরুদ্ধার করতে হবে এবং সেগুলি কোনও পরিচয় প্রদানকারীর কাছে পাঠাতে হবে।
এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন কোডের অনুরোধ করা দেখুন।
|
ডিফল্ট: |
request.formparam.password (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | রানটাইমে নীতির জন্য উপলভ্য যেকোনও ফ্লো ভেরিয়েবল। |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: | পাসওয়ার্ড |
<RedirectUri> এলিমেন্ট
<RedirectUri>request.queryparam.redirect_uri</RedirectUri>
অনুরোধে Edge কোথায় redirect_uri প্যারামিটার খুঁজবে তা উল্লেখ করে।
রিডাইরেকশন URI সম্পর্কে
রিডাইরেকশন URI, অনুমোদনের কোড ও ইমপ্লিসিট গ্রান্টের ধরনের সাথে ব্যবহার করা হয়। রিডাইরেক্ট URI অনুমোদন সার্ভারকে (Edge) বলে দেয় যে অনুমোদন কোড (অথ কোড গ্রান্টের ধরন) বা অ্যাক্সেস টোকেন (ইমপ্লিসিট গ্রান্টের ধরন) কোথায় পাঠাতে হবে। এই প্যারামিটার কখন প্রয়োজন, কখন ঐচ্ছিক এবং কীভাবে এটি ব্যবহার করা হয় তা বোঝা গুরুত্বপূর্ণ:
-
(প্রয়োজনীয়) অনুরোধের ক্লায়েন্ট কী-এর সাথে যুক্ত ডেভেলপারের অ্যাপে কোনও কলব্যাক URL রেজিস্টার করা থাকলে এবং অনুরোধে
redirect_uriথাকলে, দু'টিকেই হুবহু মিলতে হবে। সেগুলি না মিললে, একটি সমস্যা দেখানো হয়। Edge-এ ডেভেলপার অ্যাপ রেজিস্টার করা এবং কলব্যাক URL নির্দিষ্ট করা সম্পর্কিত তথ্যের জন্য, অ্যাপ রেজিস্টার করা এবং API কী ম্যানেজ করা দেখুন। - (ঐচ্ছিক) কোনও কলব্যাক URL রেজিস্টার করা থাকলে এবং অনুরোধে
redirect_uriনা থাকলে Edge রেজিস্টার করা কলব্যাক URL-এ রিডাইরেক্ট করে। - (প্রয়োজনীয়) কলব্যাক URL রেজিস্টার করা না থাকলে,
redirect_uriপ্রয়োজন। মনে রাখবেন, এই ক্ষেত্রে Edge যেকোনও URL গ্রহণ করবে। এই ক্ষেত্রে নিরাপত্তা সংক্রান্ত সমস্যা হতে পারে, তাই শুধুমাত্র বিশ্বস্ত ক্লায়েন্ট অ্যাপের সাথেই এটি ব্যবহার করা উচিত। ক্লায়েন্ট অ্যাপ বিশ্বস্ত না হলে, পেশাদার পদ্ধতি হল সবসময় কলব্যাক URL-এর রেজিস্ট্রেশন প্রয়োজন।
আপনি কোয়েরি প্যারামিটার বা হেডারে এই প্যারামিটার পাঠাতে পারবেন। ভেরিয়েবল request.queryparam.redirect_uri
থেকে বোঝা যায় যে RedirectUri
কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন, ?redirect_uri=login.myapp.com
। HTTP
হেডারে RedirectUri প্রয়োজন হলে, যেমন, এই মানটি request.header.redirect_uri হিসেবে সেট করুন। এছাড়াও, অ্যাক্সেস টোকেন ও
অনুমোদন কোডের জন্য অনুরোধ করা
দেখুন।
|
ডিফল্ট: |
request.formparam.redirect_uri (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | রানটাইমে নীতিতে অ্যাক্সেস করা যায় এমন যেকোনও ফ্লো ভেরিয়েবল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
এছাড়াও, GenerateAuthorizationCode অপারেশনের সাথে ব্যবহার করা হয়। |
<RefreshToken> এলিমেন্ট
<RefreshToken>request.queryparam.refreshtoken</RefreshToken>
রিফ্রেশ টোকেন ব্যবহার করে অ্যাক্সেস টোকেনের অনুরোধ করার সময়, আপনাকে অবশ্যই অনুরোধে রিফ্রেশ টোকেন দিতে হবে। এই এলিমেন্ট আপনাকে নির্দিষ্ট করতে দেয় যে Edge কোথায় রিফ্রেশ টোকেন খুঁজবে। যেমন, এটি কোয়েরি প্যারামিটার, HTTP হেডার বা ফর্ম প্যারামিটার (ডিফল্ট) হিসেবে পাঠানো যেতে পারে।
ভেরিয়েবল request.queryparam.refreshtoken থেকে বোঝা যায় যে রিফ্রেশ
টোকেন কোয়েরি প্যারামিটার হিসেবে থাকতে হবে, যেমন,
?refresh_token=login.myapp.com। HTTP
হেডারে RefreshToken প্রয়োজন হলে, যেমন, এই ভ্যালু request.header.refresh_token হিসেবে সেট করুন। এছাড়াও, অ্যাক্সেস টোকেন ও
অনুমোদন কোডের জন্য অনুরোধ করা
দেখুন।
|
ডিফল্ট: |
request.formparam.refresh_token (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | রানটাইমে নীতিতে অ্যাক্সেস করা যায় এমন যেকোনও ফ্লো ভেরিয়েবল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<RefreshTokenExpiresIn> এলিমেন্ট
<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>
মিলিসেকেন্ডে রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়ার সময় প্রয়োগ করে। মেয়াদ শেষ হওয়ার সময় হল সিস্টেম
জেনারেটেড ভ্যালু এবং <RefreshTokenExpiresIn> ভ্যালু। <RefreshTokenExpiresIn>-এর মান -1 হলে, রিফ্রেশ টোকেনের
মেয়াদ OAuth রিফ্রেশ টোকেনের সর্বাধিক মেয়াদ অনুযায়ী শেষ হয়ে যায়। <RefreshTokenExpiresIn> উল্লেখ করা না থাকলে,
সিস্টেম লেভেলে কনফিগার করা ডিফল্ট ভ্যালু প্রয়োগ করা হয়। ডিফল্ট সিস্টেম সেটিংস সম্পর্কে আরও
তথ্য পেতে Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।
এছাড়াও, হার্ড-কোডেড, ডিফল্ট ভ্যালু ব্যবহার করে অথবা
ফ্লো ভেরিয়েবল রেফারেন্স করে রানটাইমে মেয়াদ শেষ হওয়ার সময় সেট করা যেতে পারে। যেমন, আপনি একটি কী ভ্যালু
ম্যাপে টোকেনের মেয়াদ শেষ হওয়ার ভ্যালু স্টোর করতে, সেটি রিট্রিভ করতে, কোনও ভেরিয়েবলে অ্যাসাইন করতে এবং নীতিতে রেফারেন্স করতে পারবেন। যেমন, kvm.oauth.expires_in.
নিম্নলিখিত স্তবকে একটি ফ্লো ভেরিয়েবল এবং একটি ডিফল্ট ভ্যালুও নির্দিষ্ট করা হয়েছে। মনে রাখবেন, ফ্লো ভেরিয়েবলের মান নির্দিষ্ট ডিফল্ট মানের চেয়ে বেশি গুরুত্বপূর্ণ।
<RefreshTokenExpiresIn ref="kvm.oauth.expires_in">
3600000 <!--default value in milliseconds-->
</RefreshTokenExpiresIn>প্রাইভেট ক্লাউড: Edge for Private Cloud ইনস্টলেশনের জন্য, ডিফল্ট
ভ্যালু conf_keymanagement_oauth_refresh_token_expiry_time_in_millis প্রপার্টির মাধ্যমে সেট করা হয়।
এই প্রপার্টি সেট করতে:
- এডিটরে
message-processor.propertiesফাইল খুলুন। ফাইলটি না থাকলে, এটি তৈরি করুন:vi /opt/apigee/customer/application/message-processor.properties
- ইচ্ছা অনুযায়ী প্রপার্টি সেট করুন:
conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- প্রপার্টি ফাইলের মালিক "apigee" ব্যবহারকারী কিনা তা নিশ্চিত করুন:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- মেসেজ প্রসেসর রিস্টার্ট করুন।
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
|
ডিফল্ট: |
63072000000 ms (২ বছর) (৫ আগস্ট, ২০২৪ থেকে কার্যকর) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
| সঠিক মান: |
|
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<ResponseType> এলিমেন্ট
<ResponseType>request.queryparam.response_type</ResponseType>
এই এলিমেন্ট Edge-কে জানায় যে ক্লায়েন্ট অ্যাপ কোন ধরনের গ্র্যান্টের অনুরোধ করছে। এটি শুধুমাত্র অনুমোদন কোড এবং ইমপ্লিসিট গ্রান্ট টাইপ ফ্লোর সাথে ব্যবহার করা হয়।
ডিফল্ট হিসেবে, Edge response_type কোয়েরি
প্যারামিটারে রেসপন্স টাইপ ভ্যালু খোঁজে। আপনি যদি এই ডিফল্ট আচরণ ওভাররাইড করতে চান, তাহলে
প্রতিক্রিয়া ধরনের মান সহ একটি ফ্লো ভেরিয়েবল কনফিগার করতে <ResponseType> এলিমেন্ট ব্যবহার করুন। যেমন, আপনি এই
এলিমেন্টকে request.header.response_type হিসেবে সেট করলে, Edge অনুরোধ
হেডারে পাস করা উত্তরের ধরন খোঁজে। এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন
কোডের জন্য অনুরোধ করা দেখুন।
|
ডিফল্ট: |
request.formparam.response_type (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক। ডিফল্ট আচরণ ওভাররাইড করতে চাইলে এই এলিমেন্ট ব্যবহার করুন। |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | code (অনুমোদন কোড গ্রান্টের ধরনের জন্য) অথবা token
(ইমপ্লিসিট গ্রান্টের ধরনের জন্য) |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<ReuseRefreshToken> এলিমেন্ট
<ReuseRefreshToken>true</ReuseRefreshToken>
true হিসেবে সেট করা থাকলে, মেয়াদ শেষ না হওয়া পর্যন্ত আগে থেকে থাকা রিফ্রেশ টোকেন আবার ব্যবহার করা হয়। যদি
false, তাহলে একটি সঠিক রিফ্রেশ টোকেন
উপস্থাপন করা হলে, Apigee Edge একটি নতুন রিফ্রেশ টোকেন ইস্যু করে।
|
ডিফল্ট: |
|
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | বুলিয়ান |
| সঠিক মান: |
|
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<Scope> এলিমেন্ট
<Scope>request.queryparam.scope</Scope>
GenerateAccessToken বা GenerateAuthorizationCode
নীতির মধ্যে কোনও একটিতে এই এলিমেন্ট থাকলে, কোন স্কোপে টোকেন বা কোড গ্র্যান্ট করা হবে তা নির্দিষ্ট করতে এটি ব্যবহার করা হয়। এইসব ভ্যালু সাধারণত
ক্লায়েন্ট অ্যাপ থেকে অনুরোধে নীতিতে পাস করা হয়। আপনি এলিমেন্ট কনফিগার করে
ফ্লো ভেরিয়েবল নিতে পারেন, এর ফলে অনুরোধে স্কোপ কীভাবে পাস করা হবে তা বেছে নেওয়ার বিকল্প পাবেন। নিচে দেওয়া
উদাহরণে, request.queryparam.scope থেকে বোঝা যায় যে স্কোপকে কোয়েরি প্যারামিটার হিসেবে
থাকতে হবে, যেমন, ?scope=READ। HTTP হেডারে স্কোপের
প্রয়োজন হলে, যেমন, এই ভ্যালু request.header.scope
হিসেবে সেট করুন।
এই এলিমেন্টটি "VerifyAccessToken" নীতিতে থাকলে, কোন কোন স্কোপে নীতি প্রয়োগ করা উচিত তা নির্দিষ্ট করতে এটি ব্যবহার করা হয়। এই ধরনের নীতিতে, ভ্যালু অবশ্যই "হার্ড কোডেড" স্কোপ নাম হতে হবে -- আপনি ভেরিয়েবল ব্যবহার করতে পারবেন না। যেমন:
<Scope>A B</Scope>
এছাড়াও, OAuth2 স্কোপের সাথে কাজ করা এবং অ্যাক্সেস টোকেন ও অনুমোদন কোডের জন্য অনুরোধ করা দেখুন।
|
ডিফল্ট: |
কোনও স্কোপ নেই |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: |
Generate* নীতির সাথে ব্যবহার করা হলে, ফ্লো ভেরিয়েবল। VerifyAccessToken-এর সাথে ব্যবহার করা হলে, স্কোপের নামের স্পেস-সেপারেটেড তালিকা (স্ট্রিং)। |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<State> এলিমেন্ট
<State>request.queryparam.state</State>
যেসব ক্ষেত্রে ক্লায়েন্ট অ্যাপকে অবশ্যই অনুমোদন সার্ভারে স্টেট সংক্রান্ত তথ্য পাঠাতে হবে, এই এলিমেন্ট আপনাকে নির্দিষ্ট করতে দেয় যে Edge কোথায় স্টেট ভ্যালু খুঁজবে। যেমন, এটি কোয়েরি প্যারামিটার বা HTTP হেডার হিসেবে পাঠানো হতে পারে। CSRF অ্যাটাক প্রতিরোধ করার জন্য স্টেট ভ্যালুকে সাধারণত নিরাপত্তা সংক্রান্ত ব্যবস্থা হিসেবে ব্যবহার করা হয়।
যেমন, request.queryparam.state থেকে বোঝা যায় যে কোয়েরি প্যারামিটার হিসেবে স্ট্যাটাস
উপস্থিত থাকতে হবে, যেমন, ?state=HjoiuKJH32। HTTP হেডারে স্টেট
প্রয়োজন হলে, এই ভ্যালু request.header.state
হিসেবে সেট করুন। এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন কোডের
অনুরোধ করা দেখুন।
|
ডিফল্ট: |
কোনও রাজ্য নেই |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | রানটাইমে নীতির অ্যাক্সেস থাকা যেকোনও ফ্লো ভেরিয়েবল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<StoreToken> এলিমেন্ট
<StoreToken>true</StoreToken>
<ExternalAuthorization>
এলিমেন্ট true হলে এই এলিমেন্টকে true হিসেবে সেট করুন। <StoreToken> এলিমেন্ট Apigee Edge-কে এক্সটার্নাল অ্যাক্সেস টোকেন
স্টোর করতে বলে। অন্যথায়, এটি সেভ করা হবে না।
|
ডিফল্ট: |
মিথ্যা |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | বুলিয়ান |
| সঠিক মান: | ঠিক বা ভুল |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: |
|
<SupportedGrantTypes>/<GrantType> এলিমেন্ট
<SupportedGrantTypes> <GrantType>authorization_code</GrantType> <GrantType>client_credentials</GrantType> <GrantType>implicit</GrantType> <GrantType>password</GrantType> </SupportedGrantTypes>
Apigee Edge-এ OAuth টোকেন এন্ডপয়েন্ট দ্বারা কাজ করে এমন গ্রান্টের ধরন নির্দিষ্ট করে। একটি এন্ডপয়েন্ট একাধিক গ্র্যান্টের ধরন সাপোর্ট করতে পারে (অর্থাৎ, একটি এন্ডপয়েন্ট একাধিক গ্র্যান্টের ধরনের জন্য অ্যাক্সেস টোকেন ডিস্ট্রিবিউট করার জন্য কনফিগার করা যেতে পারে)।
এন্ডপয়েন্ট সম্পর্কে আরও জানতে, OAuth এন্ডপয়েন্ট
বোঝা দেখুন। grant_type
প্যারামিটারে টোকেন অনুরোধে গ্র্যান্টের ধরন পাস করা হয়।
অনুমোদিত অনুদানের ধরন উল্লেখ করা না থাকলে, শুধুমাত্র এই অনুদানের ধরনগুলি অনুমোদিত হবে:
authorization_code এবং implicit. এছাড়াও, <GrantType> এলিমেন্ট দেখুন (এটি একটি উচ্চ-স্তরের এলিমেন্ট যা
ক্লায়েন্ট অনুরোধে পাস করা grant_type প্যারামিটারটি Apigee Edge কোথায় খুঁজবে তা নির্দিষ্ট করতে
ব্যবহৃত হয়। Edge এটি নিশ্চিত করবে যে grant_type প্যারামিটারের ভ্যালু
কাজ করে এমন গ্র্যান্টের ধরনের সাথে মিলছে)।
|
ডিফল্ট: |
অনুমোদন _কোড ও ইমপ্লিসিট |
|
উপস্থিতি: |
প্রয়োজনীয় |
| টাইপ: | স্ট্রিং |
| সঠিক মান: |
|
<Tokens>/<Token> এলিমেন্ট
ValidateToken ও InvalidateToken অপারেশনের সাথে ব্যবহার করা হয়। এছাড়াও, অ্যাক্সেস টোকেন অনুমোদন করা ও
প্রত্যাহার করা দেখুন। <Token> এলিমেন্ট সেই ফ্লো ভেরিয়েবলকে শনাক্ত করে যা বাতিল করা টোকেনের সোর্সকে
সংজ্ঞায়িত করে। ডেভেলপারদের যদি অ্যাক্সেস টোকেন জমা দিতে হয়, তাহলে
access_token নামের কোয়েরি প্যারামিটার ব্যবহার করুন, যেমন,
request.queryparam.access_token ব্যবহার করুন।
<UserName> এলিমেন্ট
<UserName>request.queryparam.user_name</UserName>
এই এলিমেন্ট শুধুমাত্র পাসওয়ার্ড গ্র্যান্ট টাইপের সাথে ব্যবহার করা হয়। পাসওয়ার্ড
গ্র্যান্ট টাইপের ক্ষেত্রে, ব্যবহারকারীর ক্রেডেনশিয়াল (পাসওয়ার্ড ও ইউজারনেম) অবশ্যই
OAuthV2 নীতির জন্য উপলভ্য করতে হবে। <PassWord> ও <UserName> এলিমেন্টগুলি
ভেরিয়েবেল নির্দিষ্ট করতে ব্যবহার করা হয়, যেখানে Edge এইসব ভ্যালু খুঁজে পেতে পারে। এইসব এলিমেন্ট নির্দিষ্ট করা না থাকলে,
নীতিটি username
এবং password নামের ফর্ম প্যারামিটারে (ডিফল্ট হিসেবে) ভ্যালু খুঁজে পাবে বলে আশা করা হয়। মান খুঁজে না পাওয়া গেলে, নীতিটি একটি সমস্যা দেখায়। আপনি
<PassWord> ও <UserName> এলিমেন্ট ব্যবহার করে এমন যেকোনও
ফ্লো ভেরিয়েবল রেফারেন্স করতে পারবেন যাতে ক্রেডেনশিয়াল আছে।
যেমন, আপনি কোয়েরি প্যারামিটারে ইউজারনেম পাস করতে পারেন এবং
<UserName> এলিমেন্টটি এইভাবে সেট করতে পারেন:
<UserName>request.queryparam.username</UserName>.HTTP হেডারে ইউজারনেম
প্রয়োজন হলে, এই ভ্যালু request.header.username হিসেবে সেট করুন।
OAuthV2 নীতি এইসব ক্রেডেনশিয়াল ভ্যালু নিয়ে আর কিছু করে না; Edge শুধু যাচাই করে দেখে যে সেগুলি আছে কিনা। টোকেন জেনারেশন নীতি কার্যকর করার আগে, API ডেভেলপারকে অনুরোধ করা ভ্যালুগুলি পুনরুদ্ধার করতে হবে এবং সেগুলি কোনও পরিচয় প্রদানকারীর কাছে পাঠাতে হবে।
এছাড়াও, অ্যাক্সেস টোকেন ও অনুমোদন কোডের অনুরোধ করা দেখুন।
|
ডিফল্ট: |
request.formparam.username (a x-www-form-urlencoded and specified in the request body) |
|
উপস্থিতি: |
ঐচ্ছিক |
| টাইপ: | স্ট্রিং |
| সঠিক মান: | যেকোনও ভেরিয়েবল সেটিং। |
| গ্র্যান্টের ধরনের সাথে ব্যবহার করা হয়: | পাসওয়ার্ড |
অ্যাক্সেস টোকেন যাচাই করা হচ্ছে
API প্রক্সির জন্য টোকেন এন্ডপয়েন্ট সেট-আপ করা হয়ে গেলে, একটি সংশ্লিষ্ট OAuthV2 নীতি যা
VerifyAccessToken অপারেশন নির্দিষ্ট করে, সেটি সেই ফ্লোর সাথে অ্যাটাচ করা হয় যা সুরক্ষিত রিসোর্স
এক্সপোজ করে।
যেমন, কোনও API-তে পাঠানো সব অনুরোধ যাতে অনুমোদিত হয় তা নিশ্চিত করতে, নিম্নলিখিত নীতি অ্যাক্সেস টোকেন যাচাইকরণ প্রয়োগ করে:
<OAuthV2 name="VerifyOAuthAccessToken"> <Operation>VerifyAccessToken</Operation> </OAuthV2>
সুরক্ষিত করতে হবে এমন API রিসোর্সের সাথে নীতিটি অ্যাটাচ করা হয়। API-তে করা সব অনুরোধ যাচাই করা হয়েছে কিনা তা নিশ্চিত করতে, ProxyEndpoint অনুরোধের PreFlow-তে নিম্নলিখিতভাবে নীতি অ্যাটাচ করুন:
<PreFlow>
<Request>
<Step><Name>VerifyOAuthAccessToken</Name></Step>
</Request>
</PreFlow>VerifyAccessToken অপারেশনের জন্য ডিফল্ট সেটিংস ওভাররাইড করতে নিম্নলিখিত ঐচ্ছিক এলিমেন্ট ব্যবহার করা যেতে পারে।
| নাম | বিবরণ |
|---|---|
| সুযোগ |
স্পেস দিয়ে আলাদা করা স্কোপের তালিকা। অ্যাক্সেস টোকেনে তালিকাভুক্ত স্কোপের মধ্যে অন্তত একটি স্কোপ থাকলে যাচাইকরণ সফল হবে। যেমন, নিম্নলিখিত নীতি অ্যাক্সেস টোকেন চেক করে দেখবে যে এতে তালিকাভুক্ত স্কোপের মধ্যে অন্তত একটি আছে কিনা। যদি পড়ুন বা লিখুন থাকে, তাহলে যাচাইকরণ সফল হবে। <OAuthV2 name="ValidateOauthScopePolicy"> <Operation>VerifyAccessToken</Operation> <Scope>READ WRITE</Scope> </OAuthV2> |
| AccessToken | যে ভেরিয়েবলে অ্যাক্সেস টোকেন থাকার কথা। যেমন
request.queryparam.accesstoken. সাধারণত, OAuth 2.0 স্পেসিফিকেশন অনুযায়ী, অ্যাপটি অনুমোদনের HTTP হেডারে
অ্যাক্সেস টোকেন দেখাবে বলে আশা করা হয়। অ্যাক্সেস টোকেন যদি কোনও নন-স্ট্যান্ডার্ড লোকেশনে, যেমন
কোয়েরি প্যারামিটার বা Authorization ছাড়া অন্য কোনও নামের HTTP হেডারে থাকার কথা থাকে, তাহলে এই
সেটিং ব্যবহার করুন। |
এছাড়াও, অ্যাক্সেস টোকেন যাচাই করাএবং অ্যাক্সেস টোকেন ও অনুমোদন কোডের জন্য অনুরোধ করা দেখুন।
অনুরোধ ভেরিয়েবলের লোকেশন নির্দিষ্ট করা
প্রতিটি গ্র্যান্টের ধরনের জন্য, নীতিটি অনুরোধ মেসেজে লোকেশন বা প্রয়োজনীয় তথ্য সম্পর্কে অনুমান করে। এইসব অনুমান OAuth 2.0 স্পেসিফিকেশনের উপর ভিত্তি করে করা হয়। আপনার অ্যাপকে OAuth 2.0 স্পেসিফিকেশন থেকে আলাদা হতে হলে, আপনি প্রতিটি প্যারামিটারের জন্য প্রত্যাশিত লোকেশন নির্দিষ্ট করতে পারবেন। যেমন, অনুমোদন কোড ম্যানেজ করার সময়, আপনি অনুমোদন কোড, ক্লায়েন্ট আইডি, রিডাইরেক্ট URI ও স্কোপের লোকেশন নির্দিষ্ট করতে পারবেন। এগুলি HTTP হেডার, কোয়েরি প্যারামিটার বা ফর্ম প্যারামিটার হিসেবে নির্দিষ্ট করা যেতে পারে।
নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে প্রয়োজনীয় অনুমোদন কোড প্যারামিটারের লোকেশন HTTP হেডার হিসেবে নির্দিষ্ট করতে হয়:
... <GrantType>request.header.grant_type</GrantType> <Code>request.header.code</Code> <ClientId>request.header.client_id</ClientId> <RedirectUri>request.header.redirect_uri</RedirectUri> <Scope>request.header.scope</Scope> ...
অথবা, আপনার ক্লায়েন্ট অ্যাপ বেসকে সাপোর্ট করার জন্য প্রয়োজন হলে, আপনি হেডার ও কোয়েরি প্যারামিটার মিলিয়ে মিশিয়ে ব্যবহার করতে পারেন:
... <GrantType>request.header.grant_type</GrantType> <Code>request.header.code</Code> <ClientId>request.queryparam.client_id</ClientId> <RedirectUri>request.queryparam.redirect_uri</RedirectUri> <Scope>request.queryparam.scope</Scope> ...
প্রতিটি প্যারামিটারের জন্য শুধুমাত্র একটি লোকেশন কনফিগার করা যাবে।
ফ্লো ভেরিয়েবল
এই সারণীতে সংজ্ঞায়িত ফ্লো ভেরিয়েবলগুলি সংশ্লিষ্ট OAuth নীতিগুলি এক্সিকিউট করা হলে পপুলেট করা হয় এবং তাই API প্রক্সি ফ্লোতে এক্সিকিউট করা অন্যান্য নীতি বা অ্যাপ্লিকেশনগুলির জন্য উপলভ্য।
VerifyAccessToken অপারেশন
VerifyAccessToken অপারেশন এক্সিকিউট হয়, প্রক্সির এক্সিকিউশন কনটেক্সটে প্রচুর ফ্লো ভেরিয়েবল পপুলেট করা হয়। এইসব ভেরিয়েবল আপনাকে অ্যাক্সেস টোকেন, ডেভেলপার অ্যাপ, ডেভেলপার ও কোম্পানি সম্পর্কিত প্রপার্টি দেয়। আপনি AssignMessage বা JavaScript নীতি ব্যবহার করতে পারেন, যেমন, এর মধ্যে যেকোনও একটি ভেরিয়েবল পড়তে এবং পরে ফ্লোতে প্রয়োজন মতো ব্যবহার করতে। এইসব ভেরিয়েবল ডিবাগিংয়ের উদ্দেশ্যেও কাজে লাগতে পারে।
proxy.pathsuffix থেকে প্রাপ্ত) দিয়ে
কনফিগার করা থাকে, তাহলে API প্রোডাক্ট ভেরিয়েবল অটোমেটিক পূরণ হয়ে যাবে। flow.resource.name ভেরিয়েবল স্পষ্টভাবে সেট করার প্রয়োজন নেই।
যেখানে API প্রোডাক্ট বৈধ এনভায়রনমেন্ট ও API প্রক্সি দিয়ে কনফিগার করা হয় না, সেখানে
ফ্লোতে API প্রোডাক্ট ভেরিয়েবল পপুলেট করার জন্য
flow.resource.name অবশ্যই স্পষ্টভাবে সেট করতে হবে। প্রোডাক্ট কনফিগারেশন সম্পর্কে আরও জানতে, API প্রকাশ করার জন্য Edge ম্যানেজমেন্ট
API ব্যবহার করা দেখুন।
টোকেন-নির্দিষ্ট ভেরিয়েবল
| ভেরিয়েবল | বিবরণ |
|---|---|
organization_name |
যে সংস্থার হয়ে প্রক্সি এক্সিকিউট করা হচ্ছে তার নাম। |
developer.id |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের সাথে যুক্ত ডেভেলপারের আইডি। |
developer.app.name |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের সাথে যুক্ত ডেভেলপার। |
client_id |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের ক্লায়েন্ট আইডি। |
grant_type |
অনুরোধের সাথে যুক্ত গ্রান্টের ধরন। |
token_type |
অনুরোধের সাথে যুক্ত টোকেনের ধরন। |
access_token |
যাচাই করা হচ্ছে এমন অ্যাক্সেস টোকেন। |
accesstoken.{custom_attribute} |
অ্যাক্সেস টোকেনে নাম সহ কাস্টম অ্যাট্রিবিউট। |
issued_at |
অ্যাক্সেস টোকেন ইস্যু করার তারিখটি Unix epoch টাইমে মিলিসেকেন্ডে প্রকাশ করা হয়। |
expires_in |
অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার সময়। এটি
সেকেন্ডে প্রকাশ করা হয়। যদিও ExpiresIn
এলিমেন্ট মিলি সেকেন্ডে মেয়াদ শেষ হওয়ার সময় সেট করে, টোকেন রেসপন্স ও
ফ্লো ভেরিয়েবলে, ভ্যালু সেকেন্ডে প্রকাশ করা হয়। |
status |
অ্যাক্সেস টোকেনের স্ট্যাটাস (যেমন, অনুমোদিত বা প্রত্যাহার করা হয়েছে)। |
scope |
অ্যাক্সেস টোকেনের সাথে যুক্ত স্কোপ (যদি থাকে)। |
apiproduct.<custom_attribute_name> |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের সাথে যুক্ত API প্রোডাক্টের নামযুক্ত কাস্টম অ্যাট্রিবিউট। |
apiproduct.name |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের সাথে যুক্ত API প্রোডাক্টের নাম। |
revoke_reason |
(শুধুমাত্র Apigee hybrid) অ্যাক্সেস টোকেন কেন প্রত্যাহার করা হয়েছে তা নির্দেশ করে। ভ্যালু |
অ্যাপ-নির্দিষ্ট ভেরিয়েবল
এইসব ভেরিয়েবল টোকেনের সাথে যুক্ত ডেভেলপার অ্যাপের সাথে সম্পর্কিত।
| ভেরিয়েবল | বিবরণ |
|---|---|
app.name |
|
app.id |
|
app.accessType |
|
app.callbackUrl |
|
app.status |
অনুমোদিত বা প্রত্যাহার করা হয়েছে |
app.scopes |
|
app.appFamily |
|
app.apiproducts |
|
app.appParentStatus |
|
app.appType |
যেমন: ডেভেলপার |
app.appParentId |
|
app.created_by |
|
app.created_at |
|
app.last_modified_at |
|
app.last_modified_by |
|
app.{custom_attributes} |
নিবন্ধিত ক্লায়েন্ট অ্যাপের নামযুক্ত কাস্টম অ্যাট্রিবিউট। |
ডেভেলপার-নির্দিষ্ট ভেরিয়েবল
যদি app.appType "Company" হয়, তাহলে কোম্পানির অ্যাট্রিবিউট অটো-ফিল করা হয় এবং যদি app.appType "Developer" হয়, তাহলে ডেভেলপার অ্যাট্রিবিউট অটো-ফিল করা হয়।
| ভেরিয়েবল | বিবরণ |
|---|---|
| ডেভেলপার-নির্দিষ্ট ভেরিয়েবল | |
developer.id |
|
developer.userName |
|
developer.firstName |
|
developer.lastName |
|
developer.email |
|
developer.status |
অ্যাক্টিভ বা ইনঅ্যাক্টিভ |
developer.apps |
|
developer.created_by |
|
developer.created_at |
|
developer.last_modified_at |
|
developer.last_modified_by |
|
developer.{custom_attributes} |
ডেভেলপারের নামযুক্ত কাস্টম অ্যাট্রিবিউট। |
কোম্পানি-নির্দিষ্ট ভেরিয়েবল
যদি app.appType "Company" হয়, তাহলে কোম্পানির অ্যাট্রিবিউট অটো-ফিল করা হয় এবং যদি app.appType "Developer" হয়, তাহলে ডেভেলপার অ্যাট্রিবিউট অটো-ফিল করা হয়।
| ভেরিয়েবল | বিবরণ |
|---|---|
company.id |
|
company.displayName |
|
company.apps |
|
company.appOwnerStatus |
|
company.created_by |
|
company.created_at |
|
company.last_modified_at |
|
company.last_modified_by |
|
company.{custom_attributes} |
কোম্পানির কোনও নামযুক্ত কাস্টম অ্যাট্রিবিউট। |
GenerateAuthorizationCode অপারেশন
GenerateAuthorizationCode অপারেশন সফলভাবে এক্সিকিউট হলে এইসব ভেরিয়েবল সেট করা হয়: সফলভাবে এক্সিকিউট হলে এইসব ভেরিয়েবল সেট করা হয়:
প্রিফিক্স: oauthv2authcode.{policy_name}.{variable_name}
উদাহরণ: oauthv2authcode.GenerateCodePolicy.code
| ভেরিয়েবেল | বিবরণ |
|---|---|
code |
নীতি কার্যকর করার সময় জেনারেট হওয়া অনুমোদন কোড। |
redirect_uri |
রেজিস্টার করা ক্লায়েন্ট অ্যাপের সাথে যুক্ত রিডাইরেক্ট URI. |
scope |
ক্লায়েন্টের অনুরোধে পাস করা ঐচ্ছিক OAuth স্কোপ। |
client_id |
ক্লায়েন্ট অনুরোধে পাস করা ক্লায়েন্ট আইডি। |
GenerateAccessToken এবং RefreshAccessToken অপারেশন
GenerateAccessToken এবং RefreshAccessToken অপারেশন সফলভাবে এক্সিকিউট হলে এইসব ভেরিয়েবল সেট করা হয় । মনে রাখবেন, রিফ্রেশ টোকেন ভেরিয়েবল ক্লায়েন্ট ক্রেডেনশিয়াল গ্রান্ট ফ্লোয়ের ক্ষেত্রে প্রযোজ্য হয় না।
প্রিফিক্স: oauthv2accesstoken.{policy_name}.{variable_name}
উদাহরণ: oauthv2accesstoken.GenerateTokenPolicy.access_token
| ভেরিয়েবেলের নাম | বিবরণ |
|---|---|
access_token |
জেনারেট করা অ্যাক্সেস টোকেন। |
client_id |
এই টোকেনের সাথে যুক্ত ডেভেলপার অ্যাপের ক্লায়েন্ট আইডি। |
expires_in |
টোকেনের মেয়াদ শেষ হওয়ার ভ্যালু। বিবরণের জন্য <ExpiresIn> এলিমেন্ট দেখুন। মনে রাখবেন, উত্তরে expires_in-এর মেয়াদ সেকেন্ডে দেখানো হয়। |
scope |
টোকেনের জন্য কনফিগার করা উপলভ্য স্কোপের তালিকা। OAuth2 স্কোপের সাথে কাজ করা দেখুন। |
status |
approved অথবা revoked। |
token_type |
BearerToken-এ সেট করা আছে। |
developer.email |
টোকেনের সাথে যুক্ত ডেভেলপার অ্যাপের মালিক রেজিস্টার করা ডেভেলপারের ইমেল আইডি। |
organization_name |
যেখানে প্রক্সি এক্সিকিউট করে সেই সংস্থা। |
api_product_list |
টোকেনের সংশ্লিষ্ট ডেভেলপার অ্যাপের সাথে যুক্ত প্রোডাক্টের তালিকা। |
refresh_count |
|
refresh_token |
জেনারেট করা রিফ্রেশ টোকেন। মনে রাখবেন যে ক্লায়েন্ট ক্রেডেনশিয়াল গ্রান্ট টাইপের জন্য রিফ্রেশ টোকেন তৈরি করা হয় না। |
refresh_token_expires_in |
রিফ্রেশ টোকেনের মেয়াদ, সেকেন্ডে। |
refresh_token_issued_at |
এই সময়ের ভ্যালু হল সংশ্লিষ্ট ৩২-বিট টাইমস্ট্যাম্প পরিমাণের স্ট্রিং উপস্থাপনা। যেমন, 'Wed, 21 Aug 2013 19:16:47 UTC' টাইমস্ট্যাম্প ভ্যালু 1377112607413-এর সাথে সম্পর্কিত। |
refresh_token_status |
approved অথবা revoked। |
GenerateAccessTokenImplicitGrant
ইমপ্লিসিট গ্র্যান্ট টাইপ ফ্লোয়ের জন্য GenerateAccessTokenImplicit অপারেশন সফলভাবে এক্সিকিউট হলে এইসব ভেরিয়েবল সেট করা হয়।
প্রিফিক্স: oauthv2accesstoken.{policy_name}.{variable_name}
উদাহরণ: oauthv2accesstoken.RefreshTokenPolicy.access_token
| ভেরিয়েবেল | বিবরণ |
|---|---|
oauthv2accesstoken.access_token |
নীতি কার্যকর করার সময় জেনারেট হওয়া অ্যাক্সেস টোকেন। |
oauthv2accesstoken.{policy_name}.expires_in |
টোকেনের মেয়াদ শেষ হওয়ার ভ্যালু, সেকেন্ডে। বিবরণের জন্য <ExpiresIn> এলিমেন্ট দেখুন। |
সমস্যার রেফারেন্স
এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।
রানটাইম সমস্যা
নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।
| সমস্যার কোড | HTTP স্ট্যাটাস | কারণ | অপারেশন থেকে পাওয়া |
|---|---|---|---|
steps.oauth.v2.access_token_expired |
401 | অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেছে। |
VerifyAccessToken |
steps.oauth.v2.access_token_not_approved |
401 | অ্যাক্সেস টোকেন প্রত্যাহার করা হয়েছে। | VerifyAccessToken |
steps.oauth.v2.apiresource_doesnot_exist |
401 | অ্যাক্সেস টোকেনের সাথে যুক্ত কোনও API প্রোডাক্টে অনুরোধ করা রিসোর্সটি নেই। | VerifyAccessToken |
steps.oauth.v2.FailedToResolveAccessToken |
500 | নীতিটি
<AccessToken> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলে অ্যাক্সেস টোকেন খুঁজে পাবে বলে আশা করা হয়েছিল, কিন্তু ভেরিয়েবলটি সমাধান করা যায়নি। |
GenerateAccessToken |
steps.oauth.v2.FailedToResolveAuthorizationCode |
500 | নীতিটি
<Code> এলিমেন্টে নির্দিষ্ট করা একটি ভেরিয়েবলে একটি অনুমোদন কোড খুঁজে পাওয়ার কথা, কিন্তু ভেরিয়েবলটি সমাধান করা যায়নি। |
GenerateAuthorizationCode |
steps.oauth.v2.FailedToResolveClientId |
500 | নীতিটি
<ClientId> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলে ক্লায়েন্ট আইডি খুঁজে পাওয়ার কথা, কিন্তু ভেরিয়েবলটি সমাধান করা যায়নি। |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.FailedToResolveRefreshToken |
500 | নীতিটি
<RefreshToken> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলে একটি রিফ্রেশ টোকেন খুঁজে পাওয়ার কথা, কিন্তু ভেরিয়েবলটি সমাধান করা যায়নি। |
RefreshAccessToken |
steps.oauth.v2.FailedToResolveToken |
500 | নীতিটি
<Tokens> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলে একটি টোকেন খুঁজে পাবে বলে আশা করা হয়েছিল, কিন্তু ভেরিয়েবলটি সমাধান করা যায়নি। |
ValidateToken |
steps.oauth.v2.InsufficientScope |
403 | অনুরোধে দেখানো অ্যাক্সেস টোকেনের সুযোগ, যাচাই করা অ্যাক্সেস টোকেন নীতিতে নির্দিষ্ট করা সুযোগের সাথে মেলে না। স্কোপ সম্পর্কে জানতে, OAuth2 স্কোপের সাথে কাজ করা দেখুন। | VerifyAccessToken |
steps.oauth.v2.invalid_access_token |
401 | ক্লায়েন্টের পাঠানো অ্যাক্সেস টোকেনটি সঠিক নয়। | VerifyAccessToken |
steps.oauth.v2.invalid_client |
401 |
নীতির মনে রাখবেন: |
GenerateAccessToken RefreshAccessToken |
steps.oauth.v2.InvalidRequest |
400 | এই সমস্যার নাম একাধিক ভিন্ন ধরনের সমস্যার জন্য ব্যবহার করা হয়, সাধারণত অনুরোধে পাঠানো
প্যারামিটার অনুপস্থিত বা ভুল হলে এই সমস্যা হয়। <GenerateResponse>-এর মান false হলে,
নিচে বর্ণিত ফল্ট ভেরিয়েবল ব্যবহার করে ফল্ট নেম ও কারণের মতো
সমস্যার বিবরণ পান। |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.InvalidAccessToken |
401 | অনুমোদনকারী হেডারে "Bearer" শব্দটি নেই, যা প্রয়োজন। যেমন: Authorization: Bearer your_access_token |
VerifyAccessToken |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
অ্যাক্সেস টোকেনের সাথে যুক্ত প্রোডাক্টে API প্রক্সি নেই। পরামর্শ: অ্যাক্সেস টোকেনের সাথে যুক্ত প্রোডাক্ট সঠিকভাবে কনফিগার করা হয়েছে কিনা তা নিশ্চিত করুন। যেমন, রিসোর্স পাথে ওয়াইল্ডকার্ড ব্যবহার করলে, ওয়াইল্ডকার্ড সঠিকভাবে ব্যবহার করা হচ্ছে কিনা তা নিশ্চিত করুন। আরও বিবরণের জন্য API প্রোডাক্ট তৈরি করুন দেখুন। এই সমস্যার কারণ সম্পর্কে আরও নির্দেশিকা পেতে, এই Apigee কমিউনিটি পোস্ট দেখুন। |
VerifyAccessToken |
steps.oauth.v2.InvalidClientIdentifier |
500 |
নীতির |
GenerateAccessToken |
steps.oauth.v2.InvalidParameter |
500 | নীতিতে অবশ্যই অ্যাক্সেস টোকেন বা অনুমোদন কোড উল্লেখ করতে হবে, তবে দুটিই উল্লেখ করা যাবে না। | GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.InvalidTokenType |
500 | <Tokens>/<Token> এলিমেন্টে আপনাকে টোকেনের
ধরন (যেমন, refreshtoken) নির্দিষ্ট করতে হবে। ক্লায়েন্ট ভুল ধরন পাস করলে, এই
সমস্যাটি দেখানো হয়। |
ValidateToken InvalidateToken |
steps.oauth.v2.MissingParameter |
500 | উত্তর দেওয়ার ধরন হল token, কিন্তু কোনও গ্র্যান্টের ধরন নির্দিষ্ট করা নেই। |
GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.UnSupportedGrantType |
500 |
ক্লায়েন্ট এমন গ্র্যান্টের ধরন নির্দিষ্ট করেছে যা নীতিতে কাজ করে না (এটি <SupportedGrantTypes> এলিমেন্টে তালিকাভুক্ত নেই)। মনে রাখবেন: বর্তমানে একটি সমস্যা রয়েছে যেখানে অসমর্থিত গ্র্যান্টের ধরন সংক্রান্ত সমস্যা সঠিকভাবে দেখানো হচ্ছে না। অননুমোদিত গ্র্যান্টের ধরন সংক্রান্ত সমস্যা হলে, প্রক্সি প্রত্যাশিতভাবে সমস্যার ফ্লোতে প্রবেশ করে না। |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা
এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।
| সমস্যার নাম | কারণ |
|---|---|
InvalidValueForExpiresIn |
|
InvalidValueForRefreshTokenExpiresIn |
<RefreshTokenExpiresIn> এলিমেন্টের জন্য, সঠিক মান হল পজিটিভ
পূর্ণসংখ্যা এবং -1। |
InvalidGrantType |
<SupportedGrantTypes>
এলিমেন্টে ভুল গ্র্যান্টের ধরন উল্লেখ করা হয়েছে। বৈধ ধরনের তালিকার জন্য নীতি রেফারেন্স দেখুন। |
ExpiresInNotApplicableForOperation |
<Operations> এলিমেন্টে নির্দিষ্ট করা অপারেশনগুলি যেন মেয়াদ শেষ হয়ে যাওয়া সংক্রান্ত সুবিধা দেয়, তা নিশ্চিত করুন। যেমন, VerifyToken অপারেশনটি তা করে না। |
RefreshTokenExpiresInNotApplicableForOperation |
<Operations> এলিমেন্টে উল্লেখ করা অপারেশনগুলি রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়া সম্পর্কিত কাজ করতে পারে কিনা তা নিশ্চিত করুন। যেমন, VerifyToken অপারেশনটি তা করে না। |
GrantTypesNotApplicableForOperation |
<SupportedGrantTypes>-এ উল্লেখ করা গ্র্যান্টের ধরন নির্দিষ্ট অপারেশনের জন্য কাজ করে কিনা তা ভালোভাবে দেখে নিন। |
OperationRequired |
আপনাকে অবশ্যই মনে রাখবেন: |
InvalidOperation |
আপনাকে অবশ্যই এই নীতিতে
মনে রাখবেন: |
TokenValueRequired |
আপনাকে অবশ্যই <Tokens> এলিমেন্টে
<Token> টোকেন ভ্যালু উল্লেখ করতে হবে। |
ফল্ট ভেরিয়েবল
এই নীতি রানটাইমে কোনও সমস্যা ট্রিগার করলে, এইসব ভেরিয়েবল সেট করা হয়।
<GenerateResponse>-এর মান
false হলে
সমস্যা হলে এইসব ভেরিয়েবল অটো-ফিল হয়ে যায়। <GenerateResponse> is
true হলে, কোনও সমস্যা হলে নীতিটি ক্লায়েন্টকে অবিলম্বে একটি উত্তর পাঠায় --
সমস্যার ফ্লো এড়িয়ে যাওয়া হয় এবং এই ভেরিয়েবলগুলি পপুলেট করা হয় না। আরও তথ্যের জন্য, নীতি সংক্রান্ত সমস্যার ব্যাপারে
আপনার কী জানা প্রয়োজন দেখুন।| ভেরিয়েবল | কোথায় | উদাহরণ |
|---|---|---|
fault.name="fault_name" |
fault_name হল সমস্যার নাম, যা উপরে দেওয়া রানটাইম সংক্রান্ত সমস্যা সারণীতে তালিকাভুক্ত করা আছে। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। | fault.name = "InvalidRequest" |
oauthV2.policy_name.failed |
policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। | oauthV2.GenerateAccesstoken.failed = true |
oauthV2.policy_name.fault.name |
policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। | oauthV2.GenerateAccesstoken.fault.name = InvalidRequest
মনে রাখবেন: VerifyAccessToken অপারেশনের জন্য, ফল্টের নামের মধ্যে এই প্রত্যয়টি অন্তর্ভুক্ত থাকে: |
oauthV2.policy_name.fault.cause |
policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। | oauthV2.GenerateAccesstoken.cause = Required param : grant_type |
সমস্যার উত্তরের উদাহরণ
<GenerateResponse>
এলিমেন্ট true হলে, এই উত্তরগুলি ক্লায়েন্টকে ফেরত পাঠানো হয়।
errorcode অংশটি ট্র্যাক করা। faultstring-এ দেওয়া টেক্সটের উপর নির্ভর করবেন না, কারণ এটি পরিবর্তন হতে পারে।<GenerateResponse> সত্য হলে, টোকেন ও কোড জেনারেট করা অপারেশনগুলির জন্য নীতিটি
এই ফর্ম্যাটে সমস্যা ফেরত দেয়। সম্পূর্ণ তালিকার জন্য, দেখুন
OAuth HTTP সমস্যা
প্রতিক্রিয়া রেফারেন্স।
{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}<GenerateResponse> সত্য হলে, যাচাই ও বৈধতা সংক্রান্ত অপারেশনের জন্য নীতি এই ফর্ম্যাটে
সমস্যা ফেরত দেয়। সম্পূর্ণ তালিকার জন্য, OAuth HTTP সমস্যা
প্রতিক্রিয়া রেফারেন্স দেখুন।
{ { "fault":{ "faultstring":"Invalid Access Token", "detail":{ "errorcode":"keymanagement.service.invalid_access_token" } } }
ভুল নিয়মের উদাহরণ
<FaultRule name=OAuthV2 Faults">
<Step>
<Name>AM-InvalidClientResponse</Name>
<Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
</Step>
<Step>
<Name>AM-InvalidTokenResponse</Name>
<Condition>(fault.name = "invalid_access_token")</Condition>
</Step>
<Condition>(oauthV2.failed = true) </Condition>
</FaultRule>নীতি স্কিমা
প্রতিটি নীতির ধরন XML স্কিমা (.xsd) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি
স্কিমা GitHub-এ উপলভ্য।
ডিফল্ট OAuth কনফিগারেশনের সাথে কাজ করা
Apigee Edge-এ প্রতিটি সংস্থার (এমনকি ফ্রি ট্রায়াল সংস্থারও) জন্য OAuth টোকেন এন্ডপয়েন্ট প্রদান করা হয়। oauth নামের API প্রক্সিতে এন্ডপয়েন্ট আগে থেকেই কনফিগার করা থাকে। Apigee Edge-এ অ্যাকাউন্ট তৈরি করার সাথে সাথেই আপনি টোকেন এন্ডপয়েন্ট ব্যবহার করা শুরু করতে পারবেন। আরও বিবরণের জন্য, OAuth এন্ডপয়েন্ট বোঝা দেখুন।
অ্যাক্সেস টোকেন মুছে দেওয়া
অ্যাক্সেস টোকেন ও রিফ্রেশ টোকেন (যদি থাকে) দু'টির মেয়াদ শেষ হওয়ার পরে, ডিফল্ট হিসেবে ৩ দিন (২৫৯২০০ সেকেন্ড) পরে Apigee Edge সিস্টেম থেকে OAuth2 টোকেন মুছে দেওয়া হয়। কিছু ক্ষেত্রে, আপনি এই ডিফল্ট পরিবর্তন করতে চাইতে পারেন। যেমন, প্রচুর টোকেন তৈরি হলে, ডিস্ক স্পেস বাঁচানোর জন্য আপনি হয়তো পার্জ করার সময়সীমা কমাতে চাইবেন।
আপনি প্রাইভেট ক্লাউডের জন্য Edge ব্যবহার করলে, এই বিভাগে ব্যাখ্যা করা সংস্থা সংক্রান্ত প্রপার্টি সেট করে আপনি এই ডিফল্ট পরিবর্তন করতে পারবেন। (মেয়াদ শেষ হয়ে যাওয়া টোকেন ৩ দিন পরে মুছে দেওয়া Edge for Private Cloud ভার্সন 4.19.01 ও তার পরের ভার্সনে প্রযোজ্য। আগের ভার্সনের ক্ষেত্রে, ডিফল্ট পার্জ ইন্টারভ্যাল হল ১৮০ দিন।)
Edge Private Cloud 4.16.01 ও এর পরের ভার্সনের জন্য ডেটা মুছে দেওয়ার সেটিংস আপডেট করা
মনে রাখবেন: এই সেটিংস প্রয়োগ করার পরে জেনারেট করা টোকেনগুলিই শুধু প্রভাবিত হয়; আগে জেনারেট করা টোকেনের ক্ষেত্রে সেটিংস প্রযোজ্য হয় না।
- এডিট করার জন্য এই ফাইলটি খুলুন:
/opt/apigee/customer/application/message-processor.properties
- টোকেনের মেয়াদ শেষ হওয়ার পরে সেটি মুছে ফেলার আগে কত সেকেন্ড অপেক্ষা করতে হবে তা সেট করতে
নিম্নলিখিত প্রপার্টি যোগ করুন:
conf_keymanagement_oauth.access.token.purge.after.seconds=<number of seconds>
- মেসেজ প্রসেসর রিস্টার্ট করুন। যেমন:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
<ExpiresIn> এবং
<RefreshTokenExpiresIn> অ্যাট্রিবিউট ব্যবহার করে OAuthV2 নীতিতে টোকেন
মেয়াদ শেষ হওয়ার সময় সেট করতে পারবেন।
Edge Private Cloud 4.15.07-এর জন্য পার্জ সেটিংস আপডেট করা হচ্ছে
মনে রাখবেন: এই সেটিংস প্রয়োগ করার পরে জেনারেট করা টোকেন শুধুমাত্র প্রভাবিত হয়; আগে জেনারেট করা টোকেনের ক্ষেত্রে সেটিংস প্রযোজ্য হয় না।
-
OAuthV2 নীতিতে
<ExpiresIn>এবং<RefreshTokenExpiresIn>অ্যাট্রিবিউটের জন্য পজিটিভ ভ্যালু সেট করুন। ভ্যালু মিলিসেকেন্ডে আছে। যেমন:<ExpiresIn>1000</ExpiresIn> <RefreshTokenExpiresIn>10000</RefreshTokenExpiresIn>
-
প্রক্সি আবার ডেপ্লয় করুন।
-
আপনার প্রতিষ্ঠানের জন্য টোকেন মুছে ফেলার প্রপার্টি আপডেট করতে এই API ব্যবহার করুন:
POST https://<host-name>/v1/organizations/<org-name>
পেলোড:
<Organization name="AutomationOrganization"> <Description>Desc</Description> <Properties> <Property name="keymanagement.oauth20.access.token.purge">true</Property> <Property name="keymanagement.oauth20.access.token.purge.after.seconds">120</Property> </Properties> </Organization> -
মেসেজ প্রসেসর রিস্টার্ট করুন। যেমন:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
এই API, AutomationOrganization নামের সংস্থার জন্য টোকেন মুছে ফেলার প্রপার্টিকে true হিসেবে সেট করে। এই ক্ষেত্রে, টোকেন ও রিফ্রেশ টোকেন দুটির মেয়াদ শেষ হওয়ার ১২০ সেকেন্ড পরে ডেটাবেস থেকে অ্যাক্সেস টোকেন মুছে দেওয়া হবে।
RFC মেনে না চলা আচরণ
OAuthV2 নীতি এমন টোকেন উত্তর দেয় যা নির্দিষ্ট নন-RFC-কম্প্লায়েন্ট প্রপার্টি কন্টেন করে। নিচের সারণীতে OAuthV2 নীতি দ্বারা ফেরত পাঠানো নন-কম্প্লায়েন্ট প্রপার্টি এবং সংশ্লিষ্ট কম্প্লায়েন্ট প্রপার্টি দেখানো হয়েছে।
| OAuthV2 রিটার্ন করে: | RFC-কমপ্লায়েন্ট প্রপার্টি হল: |
|---|---|
"token_type":"BearerToken" |
"token_type":"Bearer"
|
"expires_in":"3600" |
"expires_in":3600
(সম্মতিপূর্ণ ভ্যালু হল একটি সংখ্যা, কোনও স্ট্রিং নয়।) |
এছাড়াও, grant_type = refresh_token-এর ক্ষেত্রে মেয়াদ শেষ হয়ে যাওয়া রিফ্রেশ টোকেনের জন্য সমস্যার উত্তর হল:
{"ErrorCode" : "InvalidRequest", "Error" :"Refresh Token expired"}তবে, RFC-এর সাথে মানানসই উত্তর হল:
{"error" : "invalid_grant", "error_description" :"refresh token expired"}