অ্যাক্সেস টোকেন অনুমোদন ও প্রত্যাহার করা

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

অ্যাক্সেস ও রিফ্রেশ টোকেন প্রত্যাহার করা

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

OAuth 2.0 টোকেন প্রত্যাহার সংক্রান্ত স্পেসিফিকেশন টোকেন প্রত্যাহার করার পদ্ধতি নির্ধারণ করে।

Apigee Edge একটি InvalidateToken অপারেশন প্রদান করে যা আপনাকে একটি ডেডিকেটেড টোকেন বাতিল করার এন্ডপয়েন্ট কনফিগার করতে সক্ষম করে। এই এন্ডপয়েন্টের URI প্রকাশ করার মাধ্যমে, আপনি অ্যাপ ডেভেলপারদের Edge-এর ইস্যু করা টোকেন বাতিল করার সুবিধা দেন।

OAuthV2 নীতি ও InvalidateToken অপারেশনের জন্য কনফিগারেশনের একটি উদাহরণ এখানে দেওয়া হল। এই ক্ষেত্রে, অ্যাক্সেস টোকেন ও এর সাথে যুক্ত রিফ্রেশ টোকেন, দুটিই বাতিল করা হয়। টেকনিক্যালি, এগুলি দুটিই বাতিল করা হয়েছে কারণ ক্যাসকেড ফ্ল্যাগ 'ট্রু' হিসেবে সেট করা আছে। ক্যাসকেড ফ্ল্যাগ কীভাবে কাজ করে সেই সম্পর্কে আরও তথ্য পেতে, নিচে টোকেন এলিমেন্টের অ্যাট্রিবিউট বিভাগ দেখুন।

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

<Tokens>/<Token> এলিমেন্ট

সেই ফ্লো ভেরিয়েবেল শনাক্ত করে যা বাতিল করতে হবে এমন টোকেন নির্দিষ্ট করে। ডেভেলপারদের যদি access_token নামের কোয়েরি প্যারামিটার ব্যবহার করে প্রত্যাহারের অনুরোধ জমা দিতে হয়, তাহলে সঠিক ফ্লো ভেরিয়েবল হবে request.queryparam.access_token। HTTP হেডারে টোকেন প্রয়োজন হলে, যেমন, এই মান request.header.access_token হিসেবে সেট করুন।

অ্যাট্রিবিউট

  • type (প্রয়োজনীয়, স্ট্রিং): নির্দিষ্ট করা ভেরিয়েবল দ্বারা শনাক্ত করা টোকেনের ধরন। এই মানগুলি ব্যবহার করা যাবে accesstoken এবং refreshtoken:
    • অ্যাক্সেস টোকেন তুলে নিতে, type accesstoken নির্দিষ্ট করুন।
    • অ্যাক্সেস ও রিফ্রেশ টোকেন, দুটিই প্রত্যাহার করতে, type refreshtoken নির্দিষ্ট করুন। এটি type refreshtoken দেখতে পেলে, Edge ধরে নেয় যে টোকেনটি একটি রিফ্রেশ টোকেন। সেই রিফ্রেশ টোকেনটি খুঁজে পাওয়া গেলে, সেটি বাতিল করা হয়। সেই রিফ্রেশ টোকেনটি না পাওয়া গেলে, Edge চেক করে দেখে যে এটি অ্যাক্সেস টোকেন কিনা। অ্যাক্সেস টোকেন থাকলে, সেটি প্রত্যাহার করা হয়।

      মনে রাখবেন: আপনি যদি কোনও InvalidateToken নীতিতে আগে থেকেই বাতিল করা টোকেন পাস করেন, তাহলে নীতিটি কোনও সমস্যা রিটার্ন করে না, যদিও আপনি এটি আশা করতে পারেন। এই ধরনের অপারেশনের কোনও প্রভাব পড়ে না।
  • cascade (ঐচ্ছিক, বুলিয়ান, ডিফল্ট: true) এই অ্যাট্রিবিউটের প্রাথমিক ব্যবহার হল এর সাথে যুক্ত অ্যাক্সেস টোকেন প্রত্যাহার না করেই রিফ্রেশ টোকেন প্রত্যাহার করা। এইসব কেস বিবেচনা করুন:
    • শুধুমাত্র রিফ্রেশ টোকেন প্রত্যাহার করুন এবং এর সাথে যুক্ত অ্যাক্সেস টোকেন প্রত্যাহার করবেন না। এটি করতে, <Token>-এর ধরন refreshtoken হিসেবে সেট করুন এবং ক্যাসকেডকে false হিসেবে সেট করুন।
    • অ্যাক্সেস টোকেন ও রিফ্রেশ টোকেন, দু'টিই তুলে নিন। এটি করতে, <Token> টাইপকে accesstoken হিসেবে সেট করুন। ক্যাসকেডের ভ্যালু true (ডিফল্ট মান) অথবা false হতে পারে। আপনি এটি true হিসেবে সেট করলে, অ্যাক্সেস টোকেন ও রিফ্রেশ টোকেন, দুটিই প্রত্যাহার করা হয়। আপনি এটি false হিসেবে সেট করলে, অ্যাক্সেস টোকেন প্রত্যাহার করা হয় এবং রিফ্রেশ টোকেন ব্যবহারযোগ্য থাকে না। আরও ব্যাখ্যার জন্য নিচে দেওয়া নোট দেখুন।
    • অ্যাক্সেস টোকেন প্রত্যাহার করুন এবং এর সাথে যুক্ত রিফ্রেশ টোকেন প্রত্যাহার করবেন না। কাজ করে না। আরও ব্যাখ্যার জন্য নিচে দেওয়া নোট দেখুন।

মনে রাখবেন: নিরাপত্তার কারণে, আপনি কোনও অ্যাক্সেস টোকেন প্রত্যাহার করলে, সংশ্লিষ্ট রিফ্রেশ টোকেনও প্রত্যাহার করা হবে। তাই, আপনি শুধুমাত্র অ্যাক্সেস টোকেন প্রত্যাহার করার জন্য ক্যাসকেড অ্যাট্রিবিউট ব্যবহার করতে পারবেন না। যেমন, আপনি যদি <Token> টাইপ accesstoken হিসেবে সেট করেন এবং cascade=false সেট করেন, তাহলে অ্যাক্সেস টোকেন প্রত্যাহার করা হয় (যেমনটি আশা করা হয়েছিল); তবে, সংশ্লিষ্ট রিফ্রেশ টোকেন ব্যবহারযোগ্য থাকে না। প্রত্যাহার করা অ্যাক্সেস টোকেন রিফ্রেশ করতে এটি ব্যবহার করা যাবে না। ক্যাসকেড অ্যাট্রিবিউট প্রধানত তখনই ব্যবহার করা হয় যখন আপনি শুধু রিফ্রেশ টোকেন বাতিল করতে চান। সেই ক্ষেত্রে, <Token>-এর ধরন refreshtoken হিসেবে সেট করুন, এবং cascade=false হিসেবে সেট করুন। রিফ্রেশ টোকেন প্রত্যাহার করা হবে, কিন্তু এর সাথে যুক্ত অ্যাক্সেস টোকেন বৈধ থাকবে (যতক্ষণ না সেটির মেয়াদ শেষ হয় বা সেটি প্রত্যাহার করা হয়)। আরও তথ্যের জন্য, এই কমিউনিটি ফোরাম আলোচনা দেখুন।

অ্যাক্সেস ও রিফ্রেশ টোকেন অনুমোদন করা

বাতিল করা টোকেন "আবার অনুমোদন" করতে ValidateToken অপারেশন ব্যবহার করুন। অর্থাৎ, আপনি এই অপারেশন প্রয়োগ করলে, টার্গেট করা অ্যাক্সেস বা রিফ্রেশ টোকেনের স্ট্যাটাস 'বাতিল করা হয়েছে' থেকে পরিবর্তন করে 'অনুমোদিত' করা হয়। আপনি মেয়াদ শেষ হয়ে যায়নি এমন যেকোনও বাতিল করা টোকেন যাচাই করতে পারবেন।

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

<Tokens>/<Token> এলিমেন্ট

যে ফ্লো ভেরিয়েবল যাচাই করতে হবে এমন টোকেন নির্দিষ্ট করে সেটি শনাক্ত করে। ডেভেলপারদের যদি access_token নামের কোয়েরি প্যারামিটার ব্যবহার করে যাচাইকরণের অনুরোধ জমা দিতে বলা হয়, তাহলে সঠিক ফ্লো ভেরিয়েবল হবে request.queryparam.access_token। HTTP হেডারে টোকেন প্রয়োজন হলে, যেমন, এই মান request.header.access_token হিসেবে সেট করুন।

অ্যাট্রিবিউট

  • type (প্রয়োজনীয়, স্ট্রিং) নির্দিষ্ট করা ভেরিয়েবল দ্বারা শনাক্ত করা টোকেনের ধরন। সাপোর্ট করা ভ্যালু হল accesstoken ও refreshtoken।
  • cascade (ঐচ্ছিক, বুলিয়ান): ডিফল্ট হিসেবে, এই বিকল্পটি true হিসেবে সেট করা থাকে এবং এর ফলে সংশ্লিষ্ট টোকেনে যাচাইকরণ প্রোপাগেট হয়। তাই, রিফ্রেশ টোকেনে প্রয়োগ করা হলে, এর সাথে যুক্ত অ্যাক্সেস টোকেনও যাচাই করা হয়। অ্যাক্সেস টোকেনে প্রয়োগ করা হলে, এর সাথে যুক্ত রিফ্রেশ টোকেনও যাচাই করা হয়। আপনি এটি false হিসেবে সেট করলে, শুধুমাত্র নির্দিষ্ট অ্যাক্সেস বা রিফ্রেশ টোকেন যাচাই করা হবে।