গ্রাহকের আইডি, অ্যাপ আইডি বা দু'টিই ব্যবহার করে OAuth 2.0 অ্যাক্সেস টোকেন ফিরিয়ে আনা ও প্রত্যাহার করার সুবিধা চালু করা

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

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

কখন ব্যবহারকারীর আইডি অ্যাক্সেস চালু করতে হয়

কখনও কখনও, অ্যাক্সেস টোকেনে ব্যবহারকারীর আইডি সেভ করে রাখলে সুবিধা হয়। আপনার কাছে ভাল ব্যবহারের কেস থাকলে তবেই ব্যবহারকারীর আইডি অ্যাক্সেস করার ফিচার চালু করুন। যেমন:

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

OAuth অ্যাক্সেস টোকেন সম্পর্কে

OAuth অ্যাক্সেস টোকেনে অ্যাপ আইডি অটোমেটিক যোগ করা হয়। তাই, নিচে বর্ণিত পদ্ধতিতে কোনও সংস্থার জন্য টোকেন অ্যাক্সেস চালু করার পরে, আপনি অ্যাপ আইডি দিয়ে অ্যাক্সেস টোকেন তুলে নিতে পারবেন।

গ্রাহকের আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন ফিরিয়ে আনতে ও তুলে নিতে, অ্যাক্সেস টোকেনে গ্রাহকের আইডি থাকতে হবে। কীভাবে আগে থেকে থাকা টোকেনে অন্তিম ব্যবহারকারীর আইডি যোগ করতে হয় তা নিচে বর্ণনা করা হয়েছে।

সাধারণত, Edge OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করলে, টোকেনটি নিচে দেখানো ফর্ম্যাটে থাকে:

{
 "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 ফিল্ডে টোকেনের সাথে যুক্ত অ্যাপের UUID থাকে। আপনি যদি অ্যাপ আইডি দ্বারা OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ করা ও প্রত্যাহার করার সুবিধা চালু করেন, তাহলে এটি হল সেই অ্যাপ আইডি যা আপনি ব্যবহার করেন।
  • access_token ফিল্ডে OAuth 2.0 অ্যাক্সেস টোকেনের ভ্যালু থাকে।

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

আপনি টোকেন তৈরি করার এন্ডপয়েন্টে গ্রাহকের আইডি পাস করেন। আপনি কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার বা হেডারে (এই বিষয়ে পরে ব্যাখ্যা করা হয়েছে) ব্যবহারকারীর আইডি পাস করতে পারবেন। টোকেনে গ্রাহকের আইডি যোগ করার জন্য Edge কনফিগার করার পরে, এটি 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"
}

এইসব ডেটা কীভাবে ফিরিয়ে আনা ও প্রত্যাহার করা যায় তা জানতে, নিম্নলিখিত Smart Docs দেখুন:

ব্যবহারকারীর আইডি ও অ্যাপ আইডির মাধ্যমে OAuth 2.0 টোকেনে অ্যাক্সেস চালু করা

আপনি কীভাবে ব্যবহারকারীর আইডি ও অ্যাপ আইডি দিয়ে OAuth 2.0 টোকেনে অ্যাক্সেস চালু করবেন তা নির্ভর করে আপনি কীভাবে Edge ডেপ্লয় করেছেন তার উপর:

  • ক্লাউড-ভিত্তিক ডিপ্লয়মেন্ট

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

  • প্রাইভেট ক্লাউড ডেপ্লয়মেন্টের জন্য Edge

    প্রাইভেট ক্লাউডের (অন-প্রিমিজেস) জন্য Apigee Edge-এ, আপনি সম্পূর্ণভাবে কনফিগারেশনের জন্য দায়ী। আরও জানতে, অপারেশন ও কনফিগারেশন দেখুন।

  • Apigee hybrid

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

ক্লাউডে অ্যাক্সেস চালু করা

ধাপ ১: এই ফিচার কাজ করে এমন কোনও সংস্থা চালু করুন

আপনি যেকটি সংস্থার জন্য এই ফিচার চালু করতে চান, প্রত্যেকটির জন্য এই ফিচার চালু করতে হবে।

আপনার সংস্থা আপডেট করার জন্য Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

ধাপ ২: opsadmin ও orgadmin ভূমিকার জন্য oauth2 রিসোর্স সংক্রান্ত অনুমতি দিন

আপনার orgadmin ও opsadmin ভূমিকাকেই শুধু এইসব রিট্রিভ (get) ও প্রত্যাহার (put) কল করার অনুমতি দিতে হবে। এন্ড-ইউজার আইডি বা অ্যাপ আইডির উপর ভিত্তি করে oauth2 রিসোর্সে এই অনুমতি দিতে হবে।

oauth2 রিসোর্সের জন্য কোন কোন রোলের get ও put অনুমতি আছে তা দেখতে, কোনও রিসোর্সের জন্য অনুমতি পান oauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2getputoauth2get�

আপনাকে কোনও অনুমতি যোগ করতে বা সরাতে হলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করে তাদের দিয়ে আপডেট করিয়ে নিন।

ধাপ ৩: আপনার Cassandra নোডে আগে থেকে থাকা OAuth 2.0 অ্যাক্সেস টোকেন কপি করুন

Apigee সহায়তা টিমের মাধ্যমে করা হয়: এই টাস্কে, প্রভাবিত হওয়া অর্গগুলির মধ্যে থাকা বর্তমান OAuth 2.0 অ্যাক্সেস টোকেনের কপি আপনার Cassandra নোডে কপি ও স্টোর করা হবে। এই পদ্ধতি আপনার প্রতিটি Apigee Edge পডের জন্য Cassandra নোডে পারফর্ম করা হবে। এর ফলে আপনার OAuth 2.0 অ্যাক্সেস টোকেনের বিরুদ্ধে API কল রিট্রিভ ও প্রত্যাহার করা যাবে। এর মধ্যে আগে থেকে থাকা ও নতুন তৈরি করা টোকেন অন্তর্ভুক্ত।

ধাপ ৪: ব্যবহারকারীর আইডি সহ অ্যাক্সেস টোকেন তৈরি করতে OAuth 2.0 নীতি কনফিগার করুন

অ্যাক্সেস টোকেন জেনারেট করতে ব্যবহৃত OAuth 2.0 নীতি কনফিগার করে টোকেনে ব্যবহারকারীর আইডি যোগ করুন। অ্যাক্সেস টোকেনে গ্রাহকের আইডি যোগ করার মাধ্যমে, আপনি গ্রাহকের আইডি দিয়ে ডেটা রিট্রিভ করতে এবং অ্যাক্সেস প্রত্যাহার করতে পারবেন।

অ্যাক্সেস টোকেনে ব্যবহারকারীর আইডি অন্তর্ভুক্ত করার জন্য নীতি কনফিগার করতে, আপনাকে অবশ্যই ইনপুট ভেরিয়েবল নির্দিষ্ট করতে হবে যাতে ব্যবহারকারীর আইডি থাকে। ভেরিয়েবল নির্দিষ্ট করতে <AppEndUser> ট্যাগ ব্যবহার করুন।

নিচে দেওয়া OAuth 2.0 নীতি, যার নাম GenerateAccessTokenClient, একটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করে। বোল্ড অক্ষরে <AppEndUser> ট্যাগ যোগ করা হয়েছে, তা লক্ষ্য করুন:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

তারপরে, OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করতে, আপনি নিম্নলিখিত cURL কমান্ড ব্যবহার করতে পারেন, যার মধ্যে appuserID হেডার হিসেবে ব্যবহারকারীর আইডি পাস করা হয়:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

এই উদাহরণে, appuserID অনুরোধ হেডার হিসেবে পাস করা হয়েছে। আপনি বিভিন্ন উপায়ে অনুরোধের অংশ হিসেবে তথ্য পাস করতে পারেন। যেমন, বিকল্প হিসেবে আপনি:

  • ফর্ম প্যারামিটার ভেরিয়েবল ব্যবহার করুন: request.formparam.appuserID
  • ফ্লো ভেরিয়েবল ব্যবহার করে এন্ড-ইউজারের আইডি প্রদান করুন