OAuth V2 নীতি প্রত্যাহার করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

নীতি আইকন

এক নজরে

ডেভেলপার অ্যাপ আইডি বা অ্যাপ এন্ড-ইউজার আইডি অথবা দু'টির সাথেই যুক্ত OAuth2 অ্যাক্সেস টোকেন বাতিল করে দেয়।

OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করতে OAuthv2 নীতি ব্যবহার করুন। Apigee-এর তৈরি টোকেন নিচের ফর্ম্যাটে থাকে:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

application_name এলিমেন্টে টোকেনের সাথে যুক্ত ডেভেলপার অ্যাপ আইডি থাকে।

সাধারণত, Apigee টোকেনে ব্যবহারকারীর আইডি অন্তর্ভুক্ত করে না। আপনি Apigee কনফিগার করে OAuthv2 নীতিতে <AppEndUser> এলিমেন্ট যোগ করে এন্ড-ইউজার আইডি অন্তর্ভুক্ত করতে পারেন:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

এই উদাহরণে, app_enduser নামের কোয়েরি প্যারামিটারে OAuthv2 নীতি-তে ব্যবহারকারীর আইডি পাস করুন। তারপরে, app_enduser এলিমেন্টে টোকেনে এন্ড-ইউজার আইডি যোগ করা হয়:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

ডেভেলপার অ্যাপ আইডি দ্বারা প্রত্যাহার করা

ডেভেলপার অ্যাপ আইডির সাথে যুক্ত OAuth2 অ্যাক্সেস টোকেন প্রত্যাহার করুন। Apigee-এর জেনারেট করা সব OAuth2 অ্যাক্সেস টোকেনে টোকেনের সাথে যুক্ত ডেভেলপার অ্যাপের আইডি থাকে। তারপরে, আপনি সেই অ্যাপ আইডির ভিত্তিতে টোকেন প্রত্যাহার করতে পারবেন।

  • নির্দিষ্ট ডেভেলপারদের জন্য অ্যাপ আইডির তালিকা পেতে Developer apps API ব্যবহার করুন।

  • এছাড়াও, কোনও অ্যাপ সম্পর্কে বিস্তারিত তথ্য পেতে, আপনি Developer apps API ব্যবহার করতে পারেন।

অ্যাপের এন্ড-ইউজার আইডি দিয়ে প্রত্যাহার করা

কোনও নির্দিষ্ট অ্যাপের এন্ড-ইউজারের আইডির সাথে যুক্ত OAuth2 অ্যাক্সেস টোকেন প্রত্যাহার করুন। এটি হল সেই টোকেন যেটি সেই ব্যবহারকারীর আইডির সাথে যুক্ত যাকে টোকেন ইস্যু করা হয়েছে।

OAuth অ্যাক্সেস টোকেনে ডিফল্ট হিসেবে ব্যবহারকারীর আইডির কোনও ফিল্ড থাকে না। শেষ ব্যবহারকারীর আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন প্রত্যাহার করার সুবিধা চালু করতে, আপনাকে OAuthv2 নীতি কনফিগার করতে হবে যাতে টোকেনে ব্যবহারকারীর আইডি যোগ করা যায়, যেমন উপরে দেখানো হয়েছে।

অ্যাপের এন্ড-ইউজার আইডি পেতে, Developer apps API ব্যবহার করুন।

নমুনা

OAuth2 অ্যাক্সেস টোকেন তুলে নেওয়ার জন্য নিম্নলিখিত নমুনাগুলি Revoke OAuth V2 নীতি ব্যবহার করে।

ডেভেলপার অ্যাপ আইডি

ডেভেলপার অ্যাপ আইডির মাধ্যমে অ্যাক্সেস টোকেন তুলে নিতে, আপনার নীতিতে <AppId> এলিমেন্ট ব্যবহার করুন।

নিচের উদাহরণে, অ্যাক্সেস টোকেনের ডেভেলপার অ্যাপ আইডিটি app_id নামের কোয়েরি প্যারামিটারে খুঁজে পাওয়ার কথা:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

ডেভেলপার অ্যাপের আইডি দেওয়া থাকলে, নীতি অ্যাক্সেস টোকেন প্রত্যাহার করে নেয়।

টাইমস্ট্যাম্পের আগে প্রত্যাহার করুন

নির্দিষ্ট তারিখ ও সময়ের আগে তৈরি হওয়া ডেভেলপার অ্যাপ আইডির মাধ্যমে অ্যাক্সেস টোকেন প্রত্যাহার করতে, আপনার নীতিতে <RevokeBeforeTimestamp> এলিমেন্ট ব্যবহার করুন। <RevokeBeforeTimestamp> মিলিসেকেন্ডে UTC সময় নির্দিষ্ট করে। সেই সময়ের আগে ইস্যু করা সব টোকেন বাতিল করা হয়।

১ জুলাই, ২০১৯-এর আগে তৈরি করা কোনও ডেভেলপার অ্যাপের অ্যাক্সেস টোকেন তুলে নেওয়ার উদাহরণ নিচে দেওয়া হল:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

<RevokeBeforeTimestamp> এলিমেন্টটি ৬৪-বিট (লং) পূর্ণসংখ্যা নেয় যা ১ জানুয়ারি, ১৯৭০ UTC-তে মধ্যরাতের পর থেকে অতিক্রান্ত হওয়া মিলিসেকেন্ডের সংখ্যাকে বোঝায়।


এলিমেন্ট রেফারেন্স

এলিমেন্ট রেফারেন্সে RevokeOAuthV2 নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করা হয়।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

<RevokeOAuthV2> অ্যাট্রিবিউট

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

নিম্নলিখিত সারণীতে এমন অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে যা সব নীতি সংক্রান্ত পেরেন্ট এলিমেন্টের ক্ষেত্রে সাধারণ:

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
name

নীতির ইন্টার্নাল নাম। name অ্যাট্রিবিউটের ভ্যালুতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর ও ফুলস্টপ থাকতে পারে। এই ভ্যালু ২৫৫ অক্ষরের বেশি হলে চলবে না।

বিকল্প হিসেবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিকে অন্য, স্বাভাবিক-ভাষার নাম দিয়ে লেবেল করতে <DisplayName> এলিমেন্ট ব্যবহার করুন।

প্রযোজ্য নয় প্রয়োজনীয়
continueOnError

নীতি কাজ না করলে সমস্যা দেখানোর জন্য false-এ সেট করা হয়। বেশিরভাগ নীতির ক্ষেত্রে এটি প্রত্যাশিত আচরণ।

true-এ সেট করা থাকলে, নীতি কাজ না করলেও ফ্লো এক্সিকিউশন চলতে থাকে।

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true হিসেবে সেট করুন।

নীতি বন্ধ করতে false-এ সেট করুন। কোনও ফ্লোতে এটি অ্যাটাচ করা থাকলেও, নীতিটি এনফোর্স করা হবে না।

সত্য ঐচ্ছিক
async

এই অ্যাট্রিবিউট আর কাজ করে না।

মিথ্যা বন্ধ করে দেওয়া হয়েছে

<DisplayName> এলিমেন্ট

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিকে আলাদা, স্বাভাবিক-ভাষার নাম দিয়ে লেবেল করার জন্য name অ্যাট্রিবিউটের সাথে ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

প্রযোজ্য নয়

আপনি এই এলিমেন্ট বাদ দিলে, নীতির name অ্যাট্রিবিউটের ভ্যালু ব্যবহার করা হয়।

উপস্থিতি ঐচ্ছিক
ধরন স্ট্রিং

<AppId> এলিমেন্ট

প্রত্যাহার করার জন্য টোকেনের ডেভেলপার অ্যাপ আইডি নির্দিষ্ট করে। অ্যাপ আইডি আছে এমন কোনও ভেরিয়েবল অথবা আক্ষরিক অ্যাপ আইডি পাস করুন।

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
ডিফল্ট

request.formparam.app_id (a x-www-form-urlencoded এবং অনুরোধের বডিতে উল্লেখ করা আছে)

উপস্থিতি

ঐচ্ছিক

ধরন স্ট্রিং
সঠিক ভ্যালু

অ্যাপ আইডি স্ট্রিং বা লিটেরাল স্ট্রিং সহ ফ্লো ভেরিয়েবল।

<Cascade> এলিমেন্ট

true এবং আপনার কাছে যদি ঐতিহ্যবাহী অস্বচ্ছ অ্যাক্সেস টোকেন থাকে, তাহলে <AppId> অথবা <EndUserId> ম্যাচ করলে রিফ্রেশ টোকেন ও অ্যাক্সেস টোকেন, দুটিই বাতিল করা হবে। false হলে, শুধুমাত্র অ্যাক্সেস টোকেন প্রত্যাহার করা হয় এবং রিফ্রেশ টোকেন অপরিবর্তিত থাকে। একই আচরণ শুধুমাত্র অস্বচ্ছ অ্যাক্সেস টোকেনের ক্ষেত্রে প্রযোজ্য।

<Cascade>false<Cascade>
ডিফল্ট

মিথ্যা

উপস্থিতি

ঐচ্ছিক

ধরন বুলিয়ান
সঠিক ভ্যালু true বা false

<EndUserId> এলিমেন্ট

প্রত্যাহার করার জন্য টোকেনের অ্যাপ এন্ড-ইউজার আইডি নির্দিষ্ট করে। ব্যবহারকারীর আইডি বা আক্ষরিক টোকেন স্ট্রিং আছে এমন কোনও ভেরিয়েবেল পাস করুন।

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
ডিফল্ট

request.formparam.enduser_id (a x-www-form-urlencoded এবং অনুরোধের বডিতে উল্লেখ করা আছে)

উপস্থিতি

ঐচ্ছিক

ধরন স্ট্রিং
সঠিক ভ্যালু

ইউজার আইডি স্ট্রিং বা লিটেরাল স্ট্রিং সহ ফ্লো ভেরিয়েবল।

<RevokeBeforeTimestamp> এলিমেন্ট

টাইমস্ট্যাম্পের আগে ইস্যু করা টোকেন তুলে নিন। এই এলিমেন্ট <AppId> ও <EndUserId>-এর সাথে কাজ করে যাতে আপনি নির্দিষ্ট সময়ের আগে টোকেন প্রত্যাহার করতে পারেন। নীতি প্রয়োগ করার সময় হল ডিফল্ট ভ্যালু।

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
ডিফল্ট

নীতি প্রয়োগ করার টাইমস্ট্যাম্প।

উপস্থিতি

ঐচ্ছিক

ধরন ১ জানুয়ারি, ১৯৭০ UTC-তে মধ্যরাতের পর থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যাকে 64-বিট (লং) পূর্ণসংখ্যা দিয়ে দেখানো হয়।
সঠিক ভ্যালু

টাইমস্ট্যাম্প সহ ফ্লো ভেরিয়েবল অথবা আক্ষরিক টাইমস্ট্যাম্প। টাইমস্ট্যাম্প ভবিষ্যতের কোনও তারিখ হতে পারে না এবং ১ জানুয়ারি, ২০১৪-এর আগের কোনও তারিখ হতে পারে না।

ফ্লো ভেরিয়েবল

RevokeOAuthV2 নীতি ফ্লো ভেরিয়েবল সেট করে না।

সমস্যার রেফারেন্স

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে। নিচে দেখানো সমস্যার নামগুলি হল স্ট্রিং যেগুলি সমস্যা হলে fault.name ভেরিয়েবলে অ্যাসাইন করা হয়। আরও বিবরণের জন্য নিচে Fault ভেরিয়েবল বিভাগ দেখুন।

সমস্যার কোড HTTP স্ট্যাটাস কারণ
steps.oauth.v2.InvalidFutureTimestamp 500 টাইমস্ট্যাম্প ভবিষ্যতের কোনও তারিখ হতে পারে না।
steps.oauth.v2.InvalidEarlyTimestamp 500 টাইমস্ট্যাম্প ১ জানুয়ারি, ২০১৪-এর আগের হতে পারবে না।
steps.oauth.v2.InvalidTimestamp 500 টাইমস্ট্যাম্প সঠিক নয়।
steps.oauth.v2.EmptyAppAndEndUserId 500 AppdId ও EndUserId দুটিই ফাঁকা রাখা যাবে না।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

ডেপ্লয়মেন্ট সংক্রান্ত সমস্যার ব্যাপারে তথ্য পেতে UI-তে রিপোর্ট করা মেসেজ দেখুন।

ফল্ট ভেরিয়েবল

এই নীতি রানটাইমে কোনও সমস্যা ট্রিগার করলে, এইসব ভেরিয়েবল সেট করা হয়।

ভেরিয়েবল কোথায় উদাহরণ
fault.name="fault_name" fault_name হল সমস্যার নাম, যা উপরে দেওয়া রানটাইম সংক্রান্ত সমস্যা সারণীতে তালিকাভুক্ত করা আছে। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। oauthV2.GetTokenInfo.cause = ClientID is Invalid

সমস্যার উত্তরের উদাহরণ

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

ভুল নিয়মের উদাহরণ

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

সম্পর্কিত বিষয়