আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
OAuthV2 হল OAuth 2.0 অনুদান ধরণের ক্রিয়াকলাপ সম্পাদনের জন্য একটি বহুমুখী নীতি। এটি Apigee Edge-এ OAuth 2.0 এন্ডপয়েন্ট কনফিগার করার জন্য ব্যবহৃত প্রাথমিক নীতি।
টিপস: Apigee Edge-এ OAuth সম্পর্কে আরও জানতে চাইলে, OAuth হোম পেজটি দেখুন। এটি রিসোর্স, নমুনা, ভিডিও এবং আরও অনেক কিছুর লিঙ্ক প্রদান করে। একটি কার্যকরী অ্যাপ্লিকেশনে এই নীতি কীভাবে ব্যবহার করা হয় তার একটি ভাল প্রদর্শনের জন্য GitHub-এ উন্নত OAuth নমুনাটি দেখুন।
নমুনা
যাচাই করুন অ্যাক্সেস টোকেন
যাচাই করুন অ্যাক্সেস টোকেন
এই 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 Bearer টোকেন সমর্থিত। বার্তা প্রমাণীকরণ কোড (MAC) টোকেন সমর্থিত নয়।
উদাহরণস্বরূপ:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
ডিফল্টরূপে, এজ Bearer প্রিফিক্স সহ Authorization হেডারে অ্যাক্সেস টোকেন গ্রহণ করে। আপনি <AccessToken> উপাদান দিয়ে এই ডিফল্ট পরিবর্তন করতে পারেন।
জেনারেটঅ্যাক্সেসটোকেন
অ্যাক্সেস টোকেন তৈরি করা হচ্ছে
প্রতিটি সমর্থিত অনুদানের ধরণের জন্য অ্যাক্সেস টোকেন কীভাবে অনুরোধ করতে হয় তার উদাহরণের জন্য, অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ দেখুন। বিষয়টিতে এই ক্রিয়াকলাপগুলির উদাহরণ অন্তর্ভুক্ত রয়েছে:
অনুমোদন কোড তৈরি করুন
অনুমোদন কোড তৈরি করুন
অনুমোদন কোডের অনুরোধ কীভাবে করতে হয় তার উদাহরণের জন্য, অনুমোদন কোডের অনুরোধ দেখুন।
রিফ্রেশঅ্যাক্সেসটোকেন
একটি অ্যাক্সেস টোকেন রিফ্রেশ করুন
রিফ্রেশ টোকেন ব্যবহার করে অ্যাক্সেস টোকেন কীভাবে অনুরোধ করতে হয় তার উদাহরণের জন্য, অ্যাক্সেস টোকেন রিফ্রেশ করা দেখুন।
প্রতিক্রিয়া প্রবাহ টোকেন
প্রতিক্রিয়া প্রবাহে একটি অ্যাক্সেস টোকেন তৈরি করুন
কখনও কখনও আপনাকে প্রতিক্রিয়া প্রবাহে একটি অ্যাক্সেস টোকেন তৈরি করতে হতে পারে। উদাহরণস্বরূপ, আপনি ব্যাকএন্ড পরিষেবাতে করা কিছু কাস্টম যাচাইকরণের প্রতিক্রিয়ায় এটি করতে পারেন। এই উদাহরণে, ব্যবহারের ক্ষেত্রে একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন উভয়েরই প্রয়োজন, যা অন্তর্নিহিত অনুদানের ধরণকে বাদ দেয়। এই ক্ষেত্রে, আমরা টোকেন তৈরি করতে পাসওয়ার্ড অনুদানের ধরণ ব্যবহার করব। আপনি দেখতে পাবেন, এই কাজটি করার কৌশল হল একটি জাভাস্ক্রিপ্ট নীতি সহ একটি অনুমোদন অনুরোধ হেডার পাস করা।
প্রথমে, নমুনা নীতিটি দেখে নেওয়া যাক:
<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 UnAuthorized ত্রুটির সাথে ব্যর্থ হবে, যদিও নীতিতে সঠিক লগইন প্যারামিটারগুলি নির্দিষ্ট করা আছে। এই সমস্যা সমাধানের জন্য, আপনাকে একটি Authorization request header সেট করতে হবে।
অনুমোদনের শিরোনামে অবশ্যই Base64-এনকোডেড client_id:client_secret সহ একটি মৌলিক অ্যাক্সেস স্কিম থাকতে হবে।
আপনি OAuthV2 নীতির ঠিক আগে রাখা জাভাস্ক্রিপ্ট নীতির মাধ্যমে এই হেডারটি যোগ করতে পারেন, যেমন "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 হেডারে Bearer টোকেন হিসেবে পাঠানো হবে। উদাহরণস্বরূপ:
-H "Authorization: Bearer Rft3dqrs56Blirls56a"
বর্তমানে, Bearer হল একমাত্র সমর্থিত প্রিফিক্স।
ডিফল্ট: | বহনকারী |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | বহনকারী |
| অপারেশনের সাথে ব্যবহৃত: |
|
<AppEndUser> উপাদান
<AppEndUser>request.queryparam.app_enduser</AppEndUser>
যেসব ক্ষেত্রে অ্যাপের শেষ ব্যবহারকারী আইডি অনুমোদন সার্ভারে পাঠাতে হবে, এই উপাদানটি আপনাকে নির্দিষ্ট করতে দেয় যে এজ কোথায় শেষ ব্যবহারকারী আইডি খুঁজবে। উদাহরণস্বরূপ, এটি একটি কোয়েরি প্যারামিটার হিসাবে বা 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 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 সেট করলে সেই লক্ষ্য পূরণ হয়। তবে, যদি রিফ্রেশ টোকেন ব্যবহার করে পরে একটি নতুন অ্যাক্সেস টোকেন তৈরি করা হয়, তাহলে অ্যাক্সেস টোকেন থেকে আসল কাস্টম অ্যাট্রিবিউটগুলি রিফ্রেশ টোকেন রেসপন্সে প্রদর্শিত হবে। এর কারণ হল এজ মনে রাখে না যে জেনারেটেড অ্যাক্সেস টোকেন নীতিতে display অ্যাট্রিবিউটটি মূলত false সেট করা হয়েছিল - কাস্টম অ্যাট্রিবিউটটি কেবল অ্যাক্সেস টোকেনের মেটাডেটার অংশ।
আপনি যদি কোনও অনুমোদন কোডে কাস্টম বৈশিষ্ট্য যোগ করেন তবে আপনি একই আচরণ দেখতে পাবেন - যখন সেই কোড ব্যবহার করে একটি অ্যাক্সেস টোকেন তৈরি করা হয়, তখন সেই কাস্টম বৈশিষ্ট্যগুলি অ্যাক্সেস টোকেন প্রতিক্রিয়ায় প্রদর্শিত হবে। আবার, এটি আপনার ইচ্ছাকৃত আচরণ নাও হতে পারে।
এই ক্ষেত্রে কাস্টম বৈশিষ্ট্যগুলি লুকানোর জন্য, আপনার কাছে এই পছন্দগুলি রয়েছে:
- রিফ্রেশ টোকেন নীতিতে কাস্টম অ্যাট্রিবিউটগুলিকে স্পষ্টভাবে রিসেট করুন এবং তাদের প্রদর্শনকে মিথ্যাতে সেট করুন। এই ক্ষেত্রে, আপনাকে GetOAuthV2Info নীতি ব্যবহার করে মূল অ্যাক্সেস টোকেন থেকে মূল কাস্টম মানগুলি পুনরুদ্ধার করতে হতে পারে।
- প্রতিক্রিয়ায় আপনি যে কাস্টম অ্যাট্রিবিউট দেখতে চান না তা ম্যানুয়ালি এক্সট্র্যাক্ট করার জন্য একটি পোস্টপ্রসেসিং জাভাস্ক্রিপ্ট নীতি ব্যবহার করুন।
টোকেন কাস্টমাইজ করা এবং অনুমোদন কোডগুলিও দেখুন।
ডিফল্ট: | |
উপস্থিতি: | ঐচ্ছিক |
| বৈধ মান: |
|
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<ClientId> উপাদান
<ClientId>request.formparam.client_id</ClientId>
অনেক ক্ষেত্রে, ক্লায়েন্ট অ্যাপকে ক্লায়েন্ট আইডি অথোরাইজেশন সার্ভারে পাঠাতে হবে। এই উপাদানটি নির্দিষ্ট করে যে Apigee-কে ফ্লো ভেরিয়েবল request.formparam.client_id এ ক্লায়েন্ট আইডি খুঁজতে হবে। ClientId অন্য কোনও ভেরিয়েবলে সেট করা সমর্থিত নয়। অ্যাক্সেস টোকেন এবং অথোরাইজেশন কোডের অনুরোধ আরও দেখুন।
ডিফল্ট: | request.formparam.client_id (একটি x-www-form-urlencoded এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | প্রবাহ পরিবর্তনশীল: request.formparam.client_id |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
GenerateAuthorizationCode অপারেশনের সাথেও ব্যবহার করা যেতে পারে। |
<কোড> এলিমেন্ট
<Code>request.queryparam.code</Code>
অনুমোদন অনুদান প্রকার প্রবাহে, ক্লায়েন্টকে অনুমোদন সার্ভারে (Apigee Edge) একটি অনুমোদন কোড জমা দিতে হবে। এই উপাদানটি আপনাকে নির্দিষ্ট করতে দেয় যে Edge কোথায় অনুমোদন কোড খুঁজবে। উদাহরণস্বরূপ, এটি একটি কোয়েরি প্যারামিটার, HTTP হেডার, অথবা ফর্ম প্যারামিটার (ডিফল্ট) হিসাবে পাঠানো যেতে পারে।
request.queryparam.auth_code ভেরিয়েবলটি নির্দেশ করে যে অনুমোদন কোডটি একটি কোয়েরি প্যারামিটার হিসাবে উপস্থিত থাকা উচিত, যেমন, ?auth_code=AfGlvs9 । উদাহরণস্বরূপ, একটি HTTP হেডারে অনুমোদন কোড প্রয়োজন হতে, এই মানটি request.header.auth_code এ সেট করুন। অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ আরও দেখুন।
ডিফল্ট: | request.formparam.code (একটি x-www-form-urlencoded এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | রানটাইমে পলিসিতে অ্যাক্সেসযোগ্য যেকোনো ফ্লো ভেরিয়েবল |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: | অনুমোদন কোড |
<মেয়াদী> উপাদান
<ExpiresIn>10000</ExpiresIn>
অ্যাক্সেস টোকেন এবং অনুমোদন কোডের মেয়াদ শেষ হওয়ার সময় মিলিসেকেন্ডে প্রয়োগ করে। (রিফ্রেশ টোকেনের জন্য, <RefreshTokenExpiresIn> ব্যবহার করুন।) মেয়াদ শেষ হওয়ার সময় মান হল একটি সিস্টেম-উত্পাদিত মান এবং <ExpiresIn> মান। যদি <ExpiresIn> -1 তে সেট করা থাকে, তাহলে টোকেন বা কোডটি সর্বোচ্চ OAuth অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার সময় অনুসারে মেয়াদ শেষ হয়ে যায়। যদি <ExpiresIn> নির্দিষ্ট না করা থাকে, তাহলে সিস্টেম সিস্টেম স্তরে কনফিগার করা একটি ডিফল্ট মান প্রয়োগ করে।
রানটাইমে হার্ড-কোডেড, ডিফল্ট মান ব্যবহার করে অথবা ফ্লো ভেরিয়েবল উল্লেখ করে মেয়াদ শেষ হওয়ার সময় সেট করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি কী মান মানচিত্রে একটি টোকেন মেয়াদ শেষ হওয়ার মান সংরক্ষণ করতে পারেন, এটি পুনরুদ্ধার করতে পারেন, এটি একটি ভেরিয়েবলে বরাদ্দ করতে পারেন এবং নীতিতে এটি উল্লেখ করতে পারেন। উদাহরণস্বরূপ, kvm.oauth.expires_in ।
পাবলিক ক্লাউডের জন্য Apigee Edge ব্যবহার করে, এজ নিম্নলিখিত সত্তাগুলিকে অ্যাক্সেস করার পরে কমপক্ষে 180 সেকেন্ডের জন্য ক্যাশে রাখে।
- OAuth অ্যাক্সেস টোকেন। এর মানে হল যে একটি প্রত্যাহার করা টোকেন এখনও তিন মিনিট পর্যন্ত সফল হতে পারে, যতক্ষণ না এর ক্যাশে সীমা শেষ হয়।
- কী ম্যানেজমেন্ট সার্ভিস (KMS) সত্তা (অ্যাপস, ডেভেলপার, API পণ্য)।
- OAuth টোকেন এবং KMS সত্তার উপর কাস্টম অ্যাট্রিবিউট।
নিম্নলিখিত স্তবকটি একটি ফ্লো ভেরিয়েবল এবং একটি ডিফল্ট মানও নির্দিষ্ট করে। মনে রাখবেন যে ফ্লো ভেরিয়েবলের মান নির্দিষ্ট ডিফল্ট মানের চেয়ে প্রাধান্য পায়।
<ExpiresIn ref="kvm.oauth.expires_in">
3600000 <!--default value in milliseconds-->
</ExpiresIn>টোকেন তৈরির পর জোর করে মেয়াদোত্তীর্ণ করার কোনও উপায় এজ সমর্থন করে না। যদি আপনার জোর করে টোকেনের মেয়াদোত্তীর্ণ করার প্রয়োজন হয় (উদাহরণস্বরূপ, কোনও শর্তের উপর ভিত্তি করে), তাহলে একটি সম্ভাব্য সমাধান এই Apigee কমিউনিটি পোস্টে বর্ণনা করা হয়েছে।
ডিফল্টরূপে, মেয়াদোত্তীর্ণ অ্যাক্সেস টোকেনগুলি মেয়াদ শেষ হওয়ার 3 দিন পরে স্বয়ংক্রিয়ভাবে Apigee 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
- নিশ্চিত করুন যে properties ফাইলটি "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>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 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 নামক একটি ফ্লো ভেরিয়েবল নতুন মিন্ট করা auth কোড দিয়ে পূর্ণ করা হয়। মনে রাখবেন যে প্রতিক্রিয়াতে expires_in সেকেন্ডে প্রকাশ করা হয়।
ডিফল্ট: | মিথ্যা |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | সত্য অথবা মিথ্যা |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<উপাদান> ত্রুটি প্রতিক্রিয়া তৈরি করুন
<GenerateErrorResponse enabled='true'/>
যদি true তে সেট করা থাকে, তাহলে নীতিটি একটি প্রতিক্রিয়া তৈরি করে এবং ContinueOnError অ্যাট্রিবিউটটি true তে সেট করা থাকলে তা ফেরত পাঠায়। যদি false (ডিফল্ট) হয়, তাহলে কোনও প্রতিক্রিয়া পাঠানো হয় না। পরিবর্তে, নীতির কার্যকারিতার সাথে সম্পর্কিত মান দিয়ে প্রবাহ ভেরিয়েবলের একটি সেট পূরণ করা হয়।
ডিফল্ট: | মিথ্যা |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | সত্য অথবা মিথ্যা |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<গ্র্যান্টটাইপ>
<GrantType>request.queryparam.grant_type</GrantType>
নীতিমালাটি বলে যে কোন অনুরোধে পাস করা অনুদান ধরণের প্যারামিটারটি কোথায় পাওয়া যাবে। OAuth 2.0 স্পেসিফিকেশন অনুসারে, অনুদানের ধরণের সাথে অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ সরবরাহ করা আবশ্যক। ভেরিয়েবলটি একটি হেডার, কোয়েরি প্যারামিটার, অথবা ফর্ম প্যারামিটার (ডিফল্ট) হতে পারে।
উদাহরণস্বরূপ request.queryparam.grant_type নির্দেশ করে যে পাসওয়ার্ডটি একটি কোয়েরি প্যারামিটার হিসাবে উপস্থিত থাকা উচিত, যেমন, ?grant_type=password । উদাহরণস্বরূপ, একটি HTTP হেডারে grant টাইপ প্রয়োজন করতে, এই মানটি request.header.grant_type এ সেট করুন। অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ আরও দেখুন।
ডিফল্ট: | request.formparam.grant_type (একটি x-www-form-urlenকোডেড এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | উপরে ব্যাখ্যা করা হয়েছে, একটি পরিবর্তনশীল। |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<অপারেশন> উপাদান
<Operation>GenerateAuthorizationCode</Operation>
নীতি দ্বারা সম্পাদিত OAuth 2.0 ক্রিয়াকলাপ।
ডিফল্ট: | যদি |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: |
|
<পাসওয়ার্ড> উপাদান
<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 (একটি x-www-form-urlenকোডেড এবং অনুরোধের বডিতে নির্দিষ্ট করা) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | রানটাইমে পলিসিতে উপলব্ধ যেকোনো ফ্লো ভেরিয়েবল। |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: | পাসওয়ার্ড |
<RedirectUri> উপাদান
<RedirectUri>request.queryparam.redirect_uri</RedirectUri>
অনুরোধে redirect_uri প্যারামিটারের জন্য Edge কোথায় খুঁজবে তা নির্দিষ্ট করে।
পুনঃনির্দেশ URI সম্পর্কে
পুনঃনির্দেশ URI গুলি অনুমোদন কোড এবং অন্তর্নিহিত অনুদান প্রকারের সাথে ব্যবহার করা হয়। পুনর্নির্দেশ URI অনুমোদন সার্ভার (Edge) কে বলে যে কোথায় একটি অনুমোদন কোড (auth কোড অনুদান প্রকারের জন্য) বা অ্যাক্সেস টোকেন (অন্তর্নিহিত অনুদান প্রকারের জন্য) পাঠাতে হবে। এই প্যারামিটারটি কখন প্রয়োজন, কখন এটি ঐচ্ছিক এবং এটি কীভাবে ব্যবহার করা হয় তা বোঝা গুরুত্বপূর্ণ:
(প্রয়োজনীয়) যদি কোনও কলব্যাক URL ডেভেলপার অ্যাপের সাথে নিবন্ধিত থাকে যা অনুরোধের ক্লায়েন্ট কীগুলির সাথে সম্পর্কিত, এবং যদি
redirect_uriঅনুরোধে উপস্থিত থাকে, তাহলে দুটি অবশ্যই হুবহু মিলবে। যদি তারা মিল না করে, তাহলে একটি ত্রুটি দেখাবে। Edge-এ ডেভেলপার অ্যাপ নিবন্ধন এবং একটি কলব্যাক URL নির্দিষ্ট করার বিষয়ে তথ্যের জন্য, Register apps and manage API keys দেখুন।- (ঐচ্ছিক) যদি একটি কলব্যাক 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 (একটি x-www-form-urlenকোডেড এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | রানটাইমে পলিসিতে অ্যাক্সেসযোগ্য যেকোনো ফ্লো ভেরিয়েবল |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
GenerateAuthorizationCode অপারেশনের সাথেও ব্যবহৃত হয়। |
<RefreshToken> উপাদান
<RefreshToken>request.queryparam.refreshtoken</RefreshToken>
রিফ্রেশ টোকেন ব্যবহার করে অ্যাক্সেস টোকেনের অনুরোধ করার সময়, আপনাকে অনুরোধে রিফ্রেশ টোকেনটি সরবরাহ করতে হবে। এই উপাদানটি আপনাকে নির্দিষ্ট করতে দেয় যে এজ রিফ্রেশ টোকেনটি কোথায় খুঁজবে। উদাহরণস্বরূপ, এটি একটি কোয়েরি প্যারামিটার, HTTP হেডার, অথবা ফর্ম প্যারামিটার (ডিফল্ট) হিসাবে পাঠানো যেতে পারে।
request.queryparam.refreshtoken ভেরিয়েবলটি নির্দেশ করে যে রিফ্রেশ টোকেনটি একটি কোয়েরি প্যারামিটার হিসাবে উপস্থিত থাকা উচিত, যেমন, ?refresh_token=login.myapp.com । উদাহরণস্বরূপ, একটি HTTP হেডারে RefreshToken প্রয়োজন করতে, এই মানটি request.header.refresh_token এ সেট করুন। অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ আরও দেখুন।
ডিফল্ট: | request.formparam.refresh_token (একটি x-www-form-urlenকোডেড এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | রানটাইমে পলিসিতে অ্যাক্সেসযোগ্য যেকোনো ফ্লো ভেরিয়েবল |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<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>প্রাইভেট ক্লাউড: এজ ফর প্রাইভেট ক্লাউড ইনস্টলেশনের জন্য, ডিফল্ট মান 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
- নিশ্চিত করুন যে properties ফাইলটি "apigee" ব্যবহারকারীর মালিকানাধীন:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- মেসেজ প্রসেসর পুনরায় চালু করুন।
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ডিফল্ট: | ৬৩০৭২০০০০০ মিলিসেকেন্ড (২ বছর) (কার্যকর ০৫ আগস্ট, ২০২৪) |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
| বৈধ মান: |
|
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<রেসপন্সটাইপ> উপাদান
<ResponseType>request.queryparam.response_type</ResponseType>
এই উপাদানটি এজকে ক্লায়েন্ট অ্যাপটি কোন ধরণের অনুদানের অনুরোধ করছে তা জানায়। এটি শুধুমাত্র অনুমোদন কোড এবং অন্তর্নিহিত অনুদানের ধরণের প্রবাহের সাথে ব্যবহৃত হয়।
ডিফল্টরূপে, Edge একটি response_type ক্যোয়ারী প্যারামিটারে রেসপন্স টাইপ মান খোঁজে। যদি আপনি এই ডিফল্ট আচরণকে ওভাররাইড করতে চান, তাহলে রেসপন্স টাইপ মান ধারণকারী একটি ফ্লো ভেরিয়েবল কনফিগার করতে <ResponseType> উপাদান ব্যবহার করুন। উদাহরণস্বরূপ, যদি আপনি এই উপাদানটিকে request.header.response_type এ সেট করেন, তাহলে Edge অনুরোধ শিরোনামে পাস করার জন্য রেসপন্স টাইপটি খোঁজে। অ্যাক্সেস টোকেন এবং অনুমোদন কোডগুলিও দেখুন।
ডিফল্ট: | request.formparam.response_type (একটি x-www-form-urlenকোডেড এবং অনুরোধের বডিতে নির্দিষ্ট করা হয়েছে) |
উপস্থিতি: | ঐচ্ছিক। ডিফল্ট আচরণ ওভাররাইড করতে চাইলে এই উপাদানটি ব্যবহার করুন। |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | হয় code (অনুমোদন কোড অনুদান প্রকারের জন্য) অথবা token (অন্তর্নিহিত অনুদান প্রকারের জন্য) |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<ReuseRefreshToken> উপাদান
<ReuseRefreshToken>true</ReuseRefreshToken>
যখন true তে সেট করা হয়, তখন বিদ্যমান রিফ্রেশ টোকেনটি মেয়াদ শেষ না হওয়া পর্যন্ত পুনরায় ব্যবহার করা হয়। যদি false , তাহলে একটি বৈধ রিফ্রেশ টোকেন উপস্থাপন করা হলে Apigee Edge দ্বারা একটি নতুন রিফ্রেশ টোকেন জারি করা হয়।
ডিফল্ট: | |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | বুলিয়ান |
| বৈধ মান: | |
| অনুদানের ধরণের সাথে ব্যবহৃত: |
|
<স্কোপ> উপাদান
<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>request.queryparam.state</State>
যেসব ক্ষেত্রে ক্লায়েন্ট অ্যাপকে অনুমোদন সার্ভারে স্টেট তথ্য পাঠাতে হয়, এই উপাদানটি আপনাকে নির্দিষ্ট করতে দেয় যে এজ কোথায় স্টেট মান খুঁজবে। উদাহরণস্বরূপ, এটি একটি কোয়েরি প্যারামিটার হিসাবে বা HTTP হেডারে পাঠানো যেতে পারে। CSRF আক্রমণ প্রতিরোধ করার জন্য স্টেট মান সাধারণত একটি নিরাপত্তা ব্যবস্থা হিসাবে ব্যবহৃত হয়।
উদাহরণস্বরূপ request.queryparam.state নির্দেশ করে যে স্টেটটি একটি কোয়েরি প্যারামিটার হিসেবে উপস্থিত থাকা উচিত, যেমন, ?state=HjoiuKJH32 । উদাহরণস্বরূপ, একটি HTTP হেডারে স্টেট প্রয়োজন করতে, এই মানটি request.header.state এ সেট করুন। আরও দেখুন অ্যাক্সেস টোকেন এবং অনুমোদন কোডের অনুরোধ ।
ডিফল্ট: | কোন রাজ্য নেই |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | রানটাইমে পলিসিতে অ্যাক্সেসযোগ্য যেকোনো ফ্লো ভেরিয়েবল |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<স্টোরটোকেন> উপাদান
<StoreToken>true</StoreToken>
<ExternalAuthorization> উপাদানটি true হলে এই উপাদানটিকে true সেট করুন। <StoreToken> উপাদানটি Apigee Edge কে বহিরাগত অ্যাক্সেস টোকেন সংরক্ষণ করতে বলে। অন্যথায়, এটি স্থায়ী হবে না।
ডিফল্ট: | মিথ্যা |
উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | বুলিয়ান |
| বৈধ মান: | সত্য অথবা মিথ্যা |
| অনুদানের ধরণগুলির সাথে ব্যবহৃত: |
|
<সম্পর্কিত>গ্রান্টটাইপ>/<গ্রান্টটাইপ> উপাদান
<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> উপাদানটিও দেখুন (যা একটি উচ্চ-স্তরের উপাদান যা Apigee Edge-কে ক্লায়েন্ট অনুরোধে পাস করা grant_type প্যারামিটারের জন্য কোথায় সন্ধান করা উচিত তা নির্দিষ্ট করতে ব্যবহৃত হয়। Edge নিশ্চিত করবে যে grant_type প্যারামিটারের মান সমর্থিত অনুদানের ধরণগুলির মধ্যে একটির সাথে মেলে)।
ডিফল্ট: | অনুমোদন _কোড এবং অন্তর্নিহিত |
উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং |
| বৈধ মান: |
|
<টোকেন>/<টোকেন> উপাদান
ValidateToken এবং InvalidateToken অপারেশনের সাথে ব্যবহৃত হয়। অ্যাক্সেস টোকেন অনুমোদন এবং প্রত্যাহার আরও দেখুন। <Token> উপাদানটি ফ্লো ভেরিয়েবলকে সনাক্ত করে যা প্রত্যাহার করা টোকেনের উৎস নির্ধারণ করে। যদি ডেভেলপারদের access_token নামক কোয়েরি প্যারামিটার হিসাবে অ্যাক্সেস টোকেন জমা দেওয়ার আশা করা হয়, উদাহরণস্বরূপ, request.queryparam.access_token ব্যবহার করুন।
<ব্যবহারকারীর নাম> উপাদান
<UserName>request.queryparam.user_name</UserName>
This element is used with the password grant type only . With the password grant type, user credentials (password and username) must be made available to the OAuthV2 policy. The <PassWord> and <UserName> elements are used to specify variables where Edge can find these values. If these elements are not specified, the policy expects to find the values (by default) in form parameters named username and password . If the values are not found, the policy throws an error. You can use the <PassWord> and <UserName> elements to reference any flow variable containing the credentials.
For example, you can pass the username in a query parameter and set the <UserName> element like this: <UserName>request.queryparam.username</UserName> . To require the username in an HTTP header, set this value to request.header.username .
The OAuthV2 policy doesn't do anything else with these credential values; Edge is simply verifying that they are present. It is up to the API developer to retrieve the values request and send them to an identity provider before the token generation policy executes.
See also Requesting access tokens and authorization codes .
Default: | request.formparam.username (a x-www-form-urlencoded and specified in the request body) |
Presence: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| Valid values: | Any variable setting. |
| Used with grant types: | পাসওয়ার্ড |
Verifying access tokens
Once a token endpoint is set up for an API proxy, a corresponding OAuthV2 policy that specifies the VerifyAccessToken operation is attached to the Flow that exposes the protected resource.
For example, to ensure that all requests to an API are authorized, the following policy enforces access token verification:
<OAuthV2 name="VerifyOAuthAccessToken"> <Operation>VerifyAccessToken</Operation> </OAuthV2>
The policy is attached to the API resource to be protected. To ensure that all requests to an API are verified, attach the policy to the ProxyEndpoint request PreFlow, as follows:
<PreFlow>
<Request>
<Step><Name>VerifyOAuthAccessToken</Name></Step>
</Request>
</PreFlow>The following optional elements can be used to override the default settings for the VerifyAccessToken operation.
| নাম | বিবরণ |
|---|---|
| ব্যাপ্তি | A space-delimited list of scopes. Verification will succeed if at least one of the scopes listed is present in the access token. For example, the following policy will check the access token to ensure that it contains at least one of the scopes listed. If READ or WRITE is present, verification will succeed. <OAuthV2 name="ValidateOauthScopePolicy"> <Operation>VerifyAccessToken</Operation> <Scope>READ WRITE</Scope> </OAuthV2> |
| AccessToken | The variable where the access token is expected to be located. For example request.queryparam.accesstoken . By default, the access token is expected to be presented by the app in the Authorization HTTP header, according to the OAuth 2.0 specification . Use this setting if the access token is expected to be presented in a non-standard location, such as a query parameter, or an HTTP header with a name other than Authorization. |
See also Verifying access tokens and Requesting access tokens and authorization codes .
Specifying request variable locations
For each grant type, the policy makes assumptions about the location or required information in request messages. These assumptions are based on the OAuth 2.0 specification. If your apps need to deviate from the OAuth 2.0 specification, then you can specify the expected locations for each parameter. For example, when handling an authorization code, you can specify the location of the authorization code, the client ID, the redirect URI, and the scope. These can be specified as HTTP headers, query parameters, or form parameters.
The example below demonstrates how you can specify the location of required authorization code parameters as HTTP headers:
... <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> ...
Or, if necessary to support your client app base, you can mix and match headers and query parameters:
... <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> ...
Only one location can be configured per parameter.
Flow variables
The flow variables defined in this table are populated when the respective OAuth policies are executed, and hence are available to other policies or applications executing in the API proxy flow.
VerifyAccessToken operation
The VerifyAccessToken operation executes, a large number of flow variables are populated in the proxy's execution context. These variables give you properties related to the access token, developer app, developer, and company. You can use an AssignMessage or JavaScript policy, for example, to read any of these variables and use them as needed later in the flow. These variables can also be useful for debugging purposes.
proxy.pathsuffix ). Explicitly setting flow.resource.name variable is not required. Where the API products are not configured with valid environments and API proxies, then flow.resource.name must explicitly be set to populate API product variables in the flow. For details on product configuration, see Using the Edge management API to Publish APIs .
Token-specific variables
| ভেরিয়েবল | বিবরণ |
|---|---|
organization_name | The name of the organization where the proxy is executing. |
developer.id | The ID of the developer associated with the registered client app. |
developer.app.name | The name of the developer associated with the registered client app. |
client_id | The client ID of the registered client app. |
grant_type | The grant type associated with the request. |
token_type | The token type associated with the request. |
access_token | The access token that is being verified. |
accesstoken.{custom_attribute} | A named custom attribute in the access token. |
issued_at | The date the access token was issued expressed in Unix epoch time in milliseconds. |
expires_in | The expiration time for the access token. Expressed in seconds . Although the ExpiresIn element sets the expiration in milliseconds, in the token response and flow variables, the value is expresed in seconds. |
status | The status of the access token (eg, approved or revoked). |
scope | The scope (if any) associated with the access token. |
apiproduct.<custom_attribute_name> | A named custom attribute of the API product associated with the registered client app. |
apiproduct.name | The name of the API product associated with the registered client app. |
revoke_reason | (Apigee hybrid only) Indicates why the access token is revoked. Value can be |
App-specific variables
These variables are related to the Developer App that is associated with the token.
| ভেরিয়েবল | বিবরণ |
|---|---|
app.name | |
app.id | |
app.accessType | |
app.callbackUrl | |
app.status | approved or revoked |
app.scopes | |
app.appFamily | |
app.apiproducts | |
app.appParentStatus | |
app.appType | For example: Developer |
app.appParentId | |
app.created_by | |
app.created_at | |
app.last_modified_at | |
app.last_modified_by | |
app.{custom_attributes} | A named custom attribute of the registered client app. |
Developer-specific variables
If the app.appType is "Company", then company attributes are populated and if app.appType is "Developer", then developer attributes are populated.
| ভেরিয়েবল | বিবরণ |
|---|---|
| Developer-specific variables | |
developer.id | |
developer.userName | |
developer.firstName | |
developer.lastName | |
developer.email | |
developer.status | active or inactive |
developer.apps | |
developer.created_by | |
developer.created_at | |
developer.last_modified_at | |
developer.last_modified_by | |
developer.{custom_attributes} | A named custom attribute of the developer. |
Company-specific variables
If the app.appType is "Company", then company attributes are populated and if app.appType is "Developer", then developer attributes are populated.
| ভেরিয়েবল | বিবরণ |
|---|---|
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} | A named custom attribute of the company. |
GenerateAuthorizationCode operation
These variables are set when the GenerateAuthorizationCode operation executes successfully:
Prefix: oauthv2authcode.{policy_name}.{variable_name}
Example: oauthv2authcode.GenerateCodePolicy.code
| পরিবর্তনশীল | বিবরণ |
|---|---|
code | The authorization code generated when the policy executes. |
redirect_uri | The redirect URI associated with the registered client app. |
scope | The optional OAuth scope passed in the client request. |
client_id | The client ID passed in the client request. |
GenerateAccessToken and RefreshAccessToken operations
These variables are set when the GenerateAccessToken and RefreshAccessToken operations execute successfully. Note that refresh token variables do not apply for the client credentials grant type flow.
Prefix: oauthv2accesstoken.{policy_name}.{variable_name}
Example: oauthv2accesstoken.GenerateTokenPolicy.access_token
| Variable name | বিবরণ |
|---|---|
access_token | The access token that was generated. |
client_id | The client ID of the developer app associated with this token. |
expires_in | The expiry value for the token. See the <ExpiresIn> element for details. Note that in the response, expires_in is expressed in seconds . |
scope | List of available scopes configured for the token. See Working with OAuth2 scopes . |
status | Either approved or revoked . |
token_type | Is set to BearerToken . |
developer.email | The email address of the registered developer who owns the developer app associated with the token. |
organization_name | The org where the proxy executes. |
api_product_list | A list of the products associated with the token's corresponding developer app. |
refresh_count | |
refresh_token | The refresh token that was generated. Note that refresh tokens are not generated for the client credentials grant type. |
refresh_token_expires_in | The lifespan of the refresh token, in seconds. |
refresh_token_issued_at | This time value is the string representation of the corresponding 32-bit timestamp quantity. For example, 'Wed, 21 Aug 2013 19:16:47 UTC' corresponds to the timestamp value of 1377112607413. |
refresh_token_status | Either approved or revoked . |
GenerateAccessTokenImplicitGrant
These variables are set when the GenerateAccessTokenImplicit operation executes successfully for the implicit grant type flow.
Prefix: oauthv2accesstoken.{policy_name}.{variable_name}
Example: oauthv2accesstoken.RefreshTokenPolicy.access_token
| পরিবর্তনশীল | বিবরণ |
|---|---|
oauthv2accesstoken.access_token | The access token generated when the policy executes. |
oauthv2accesstoken.{policy_name}.expires_in | The expiry value for the token, in seconds. See the <ExpiresIn> element for details. |
ত্রুটির উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | অপারেশন দ্বারা নিক্ষিপ্ত |
|---|---|---|---|
steps.oauth.v2.access_token_expired | 401 | অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেছে। | AccessToken যাচাই করুন |
steps.oauth.v2.access_token_not_approved | 401 | অ্যাক্সেস টোকেন প্রত্যাহার করা হয়েছে৷ | AccessToken যাচাই করুন |
steps.oauth.v2.apiresource_doesnot_exist | 401 | অনুরোধ করা সংস্থানটি অ্যাক্সেস টোকেনের সাথে সম্পর্কিত API পণ্যগুলির মধ্যে কোনটি বিদ্যমান নেই৷ | AccessToken যাচাই করুন |
steps.oauth.v2.FailedToResolveAccessToken | 500 | নীতিটি <AccessToken> উপাদানে নির্দিষ্ট একটি ভেরিয়েবলে একটি অ্যাক্সেস টোকেন খুঁজে পাওয়ার আশা করেছিল, কিন্তু পরিবর্তনশীলটির সমাধান করা যায়নি। | অ্যাক্সেস টোকেন তৈরি করুন |
steps.oauth.v2.FailedToResolveAuthorizationCode | 500 | নীতিটি <Code> উপাদানে নির্দিষ্ট একটি ভেরিয়েবলে একটি অনুমোদন কোড খুঁজে পাওয়ার আশা করেছিল, কিন্তু পরিবর্তনশীলটির সমাধান করা যায়নি। | অথরাইজেশন কোড তৈরি করুন |
steps.oauth.v2.FailedToResolveClientId | 500 | নীতিটি <ClientId> উপাদানে নির্দিষ্ট একটি ভেরিয়েবলে ক্লায়েন্ট আইডি খুঁজে পাওয়ার আশা করেছিল, কিন্তু পরিবর্তনশীলটির সমাধান করা যায়নি। | অ্যাক্সেস টোকেন তৈরি করুন অথরাইজেশন কোড তৈরি করুন অ্যাক্সেস টোকেন ইমপ্লিসিট গ্রান্ট তৈরি করুন রিফ্রেশ অ্যাক্সেস টোকেন |
steps.oauth.v2.FailedToResolveRefreshToken | 500 | নীতিটি <RefreshToken> উপাদানে নির্দিষ্ট একটি ভেরিয়েবলে একটি রিফ্রেশ টোকেন খুঁজে পাওয়ার আশা করেছিল, কিন্তু পরিবর্তনশীলটির সমাধান করা যায়নি। | রিফ্রেশ অ্যাক্সেস টোকেন |
steps.oauth.v2.FailedToResolveToken | 500 | নীতিটি <Tokens> উপাদানে নির্দিষ্ট একটি ভেরিয়েবলে একটি টোকেন খুঁজে পাওয়ার আশা করেছিল, কিন্তু পরিবর্তনশীলটির সমাধান করা যায়নি। | টোকেন যাচাই করুন |
steps.oauth.v2.InsufficientScope | 403 | অনুরোধে উপস্থাপিত অ্যাক্সেস টোকেনের একটি সুযোগ রয়েছে যা যাচাই অ্যাক্সেস টোকেন নীতিতে উল্লেখিত সুযোগের সাথে মেলে না। সুযোগ সম্পর্কে জানতে, OAuth2 স্কোপের সাথে কাজ করা দেখুন। | AccessToken যাচাই করুন |
steps.oauth.v2.invalid_access_token | 401 | ক্লায়েন্ট থেকে পাঠানো অ্যাক্সেস টোকেন অবৈধ। | AccessToken যাচাই করুন |
steps.oauth.v2.invalid_client | 401 | এই ত্রুটির নামটি ফেরত দেওয়া হয় যখন নীতির দ্রষ্টব্য: | অ্যাক্সেস টোকেন তৈরি করুন রিফ্রেশ অ্যাক্সেস টোকেন |
steps.oauth.v2.InvalidRequest | 400 | এই ত্রুটির নামটি একাধিক বিভিন্ন ধরণের ত্রুটির জন্য ব্যবহৃত হয়, সাধারণত অনুপস্থিত বা ভুল প্যারামিটারের জন্য অনুরোধ পাঠানো হয়। যদি <GenerateResponse> false সেট করা হয়, ত্রুটির নাম এবং কারণের মতো ত্রুটির বিবরণ পুনরুদ্ধার করতে ফল্ট ভেরিয়েবল (নীচে বর্ণিত) ব্যবহার করুন। | অ্যাক্সেস টোকেন তৈরি করুন অথরাইজেশন কোড তৈরি করুন অ্যাক্সেস টোকেন ইমপ্লিসিট গ্রান্ট তৈরি করুন রিফ্রেশ অ্যাক্সেস টোকেন |
steps.oauth.v2.InvalidAccessToken | 401 | অনুমোদনের শিরোনামে "বাহক" শব্দটি নেই যা প্রয়োজন। যেমন: Authorization: Bearer your_access_token | AccessToken যাচাই করুন |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound | 401 | API প্রক্সি অ্যাক্সেস টোকেনের সাথে যুক্ত পণ্যে নেই। টিপস: নিশ্চিত করুন যে অ্যাক্সেস টোকেনের সাথে যুক্ত পণ্যটি সঠিকভাবে কনফিগার করা হয়েছে। উদাহরণস্বরূপ, আপনি যদি রিসোর্স পাথগুলিতে ওয়াইল্ডকার্ড ব্যবহার করেন তবে নিশ্চিত হন যে ওয়াইল্ডকার্ডগুলি সঠিকভাবে ব্যবহার করা হচ্ছে। বিস্তারিত জানার জন্য API পণ্য তৈরি করুন দেখুন। এই ত্রুটির কারণ সম্পর্কে আরও নির্দেশনার জন্য এই Apigee কমিউনিটি পোস্টটিও দেখুন৷ | AccessToken যাচাই করুন |
steps.oauth.v2.InvalidClientIdentifier | 500 | এই ত্রুটির নামটি ফেরত দেওয়া হয় যখন নীতির | অ্যাক্সেস টোকেন তৈরি করুন |
steps.oauth.v2.InvalidParameter | 500 | নীতিটি অবশ্যই একটি অ্যাক্সেস টোকেন বা একটি অনুমোদন কোড উল্লেখ করবে, তবে উভয়ই নয়। | অথরাইজেশন কোড তৈরি করুন অ্যাক্সেস টোকেন ইমপ্লিসিট গ্রান্ট তৈরি করুন |
steps.oauth.v2.InvalidTokenType | 500 | <Tokens>/<Token> উপাদানটির জন্য আপনাকে টোকেনের ধরন নির্দিষ্ট করতে হবে (উদাহরণস্বরূপ, refreshtoken )। যদি ক্লায়েন্ট ভুল টাইপ পাস করে, এই ত্রুটিটি নিক্ষেপ করা হয়। | টোকেন যাচাই করুন InvalidateToken |
steps.oauth.v2.MissingParameter | 500 | প্রতিক্রিয়ার ধরনটি token , কিন্তু কোনো অনুদানের ধরন নির্দিষ্ট করা নেই। | অথরাইজেশন কোড তৈরি করুন অ্যাক্সেস টোকেন ইমপ্লিসিট গ্রান্ট তৈরি করুন |
steps.oauth.v2.UnSupportedGrantType | 500 | ক্লায়েন্ট একটি অনুদানের ধরন নির্দিষ্ট করেছে যা নীতি দ্বারা অসমর্থিত (<SupportedGrantTypes> উপাদানে তালিকাভুক্ত নয়)। দ্রষ্টব্য: বর্তমানে একটি বাগ রয়েছে যেখানে অসমর্থিত অনুদানের প্রকার ত্রুটিগুলি সঠিকভাবে নিক্ষেপ করা হয় না। যদি একটি অসমর্থিত অনুদান টাইপ ত্রুটি ঘটে, প্রক্সিটি প্রত্যাশিতভাবে ত্রুটি প্রবাহে প্রবেশ করে না। | অ্যাক্সেস টোকেন তৈরি করুন অথরাইজেশন কোড তৈরি করুন অ্যাক্সেস টোকেন ইমপ্লিসিট গ্রান্ট তৈরি করুন রিফ্রেশ অ্যাক্সেস টোকেন |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ |
|---|---|
InvalidValueForExpiresIn | |
InvalidValueForRefreshTokenExpiresIn | <RefreshTokenExpiresIn> উপাদানের জন্য, বৈধ মান হল ধনাত্মক পূর্ণসংখ্যা এবং -1 । |
InvalidGrantType | <SupportedGrantTypes> উপাদানে একটি অবৈধ অনুদানের ধরন নির্দিষ্ট করা হয়েছে। বৈধ প্রকারের তালিকার জন্য নীতির রেফারেন্স দেখুন। |
ExpiresInNotApplicableForOperation | <Operations> এলিমেন্টে উল্লেখ করা ক্রিয়াকলাপগুলির মেয়াদ শেষ হয়েছে তা নিশ্চিত করুন। উদাহরণস্বরূপ, VerifyToken অপারেশন করে না। |
RefreshTokenExpiresInNotApplicableForOperation | নিশ্চিত করুন যে <Operations> এলিমেন্টে উল্লেখ করা ক্রিয়াকলাপগুলি রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়া সমর্থন করে। উদাহরণস্বরূপ, VerifyToken অপারেশন করে না। |
GrantTypesNotApplicableForOperation | নিশ্চিত করুন যে <SupportedGrantTypes>-এ উল্লেখ করা অনুদানের প্রকারগুলি নির্দিষ্ট অপারেশনের জন্য সমর্থিত। |
OperationRequired | দ্রষ্টব্য: |
InvalidOperation | দ্রষ্টব্য: |
TokenValueRequired | আপনাকে অবশ্যই <Tokens> উপাদানে একটি টোকেন <Token> মান উল্লেখ করতে হবে। |
ফল্ট ভেরিয়েবল
যখন এই নীতি রানটাইমে একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷
<GenerateResponse> false সেট করা থাকলে একটি ত্রুটি ঘটলে এই ভেরিয়েবলগুলি পপুলেট করা হয়। যদি <GenerateResponse> 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> উপাদানটি সত্য হলে এই প্রতিক্রিয়াগুলি ক্লায়েন্টের কাছে ফেরত পাঠানো হয়।
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>Policy schema
Each policy type is defined by an XML schema ( .xsd ). For reference, policy schemas are available on GitHub.
Working with the default OAuth configuration
Each organization (even a free trial org) on Apigee Edge is provisioned with an OAuth token endpoint. The endpoint is preconfigured with policies in the API proxy called oauth . You can begin using the token endpoint as soon as you create an account on Apigee Edge . For details, see Understanding OAuth endpoints .
Purging access tokens
By default, OAuth2 tokens are purged from the Apigee Edge system 3 days (259200 seconds) after both the access token and refresh token (if it exists) have expired. In some cases, you may want to change this default. For example, you may want to shorten the purge time to save disk space if a large number of tokens are being generated.
If you are on Edge for Private Cloud , you can change this default by setting organization properties as explained in this section. (The 3-day purge of expired tokens applies to Edge for Private Cloud version 4.19.01 and later. For earlier versions, the default purge interval is 180 days.)
Updating purge settings for Edge Private Cloud 4.16.01 and later versions
Note: Only tokens generated after these settings are applied are affected; the settings do not apply to tokens that were generated earlier.
- Open this file for editing:
/opt/apigee/customer/application/message-processor.properties
- Add the following property to set the number of seconds to wait before purging a token after it expires:
conf_keymanagement_oauth.access.token.purge.after.seconds=<number of seconds>
- Restart the message processor. For example:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
<ExpiresIn> and <RefreshTokenExpiresIn> attributes. Updating purge settings for Edge Private Cloud 4.15.07
Note: Only tokens generated after these settings are applied are affected; the settings do not apply to tokens that were generated earlier.
Set positive values for the
<ExpiresIn>and<RefreshTokenExpiresIn>attributes in the OAuthV2 policy. Values are in milliseconds. For example:<ExpiresIn>1000</ExpiresIn> <RefreshTokenExpiresIn>10000</RefreshTokenExpiresIn>
Redeploy the proxy.
Use this API to update the token purge properties for your organization:
POST https://<host-name>/v1/organizations/<org-name>
Payload:
<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>Restart the message processor. For example:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
This API sets the token purge property to true for the organization called AutomationOrganization. In this case, the access token will be purged from the database 120 seconds after both the token and refresh token expire.
Non-RFC-compliant behavior
The OAuthV2 policy returns a token response that contains certain non- RFC-compliant properties. The following table shows the non-compliant properties returned by the OAuthV2 policy and the corresponding compliant properties.
| OAuthV2 returns: | The RFC-compliant property is: |
|---|---|
"token_type":"BearerToken" | "token_type":"Bearer" |
"expires_in":"3600" | "expires_in":3600(The compliant value is a number, not a string.) |
Also, the error response for an expired refresh token when grant_type = refresh_token is:
{"ErrorCode" : "InvalidRequest", "Error" :"Refresh Token expired"}However, the RFC-compliant response is:
{"error" : "invalid_grant", "error_description" :"refresh token expired"}