এজ এপিআই অ্যাক্সেস করতে OAuth2 ব্যবহার করা হচ্ছে

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

Apigee Edge আপনাকে OAuth2 টোকেন দ্বারা প্রমাণীকৃত Edge API কল করার সুযোগ দেয়। Edge for the Cloud অ্যাকাউন্টগুলিতে OAuth2-এর সাপোর্ট ডিফল্টরূপে সক্রিয় থাকে। আপনি যদি Edge for the Private Cloud ব্যবহার করেন, তাহলে প্রথমে SAML বা LDAP সেট আপ না করে OAuth2 ব্যবহার করতে পারবেন না।

OAuth2 কীভাবে কাজ করে (Apigee Edge API-এর সাথে)

Apigee Edge API-তে কল করার জন্য প্রমাণীকরণের প্রয়োজন হয়, যাতে আমরা নিশ্চিত হতে পারি যে আপনিই সেই ব্যক্তি, যার পরিচয় আপনি দিচ্ছেন। আপনাকে প্রমাণীকরণের জন্য, API অ্যাক্সেস করার অনুরোধের সাথে একটি OAuth2 অ্যাক্সেস টোকেন পাঠানো আবশ্যক।

উদাহরণস্বরূপ, আপনি যদি Edge-এ কোনো সংস্থা সম্পর্কে বিস্তারিত তথ্য পেতে চান, তাহলে আপনাকে নিম্নলিখিতের মতো একটি URL-এ অনুরোধ পাঠাতে হবে:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

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

এইখানেই OAuth2-এর ভূমিকা আসে: আপনাকে প্রমাণীকরণের জন্য, সেই অনুরোধের সাথে আপনার কাছ থেকে একটি অ্যাক্সেস টোকেনও প্রয়োজন হয়। অ্যাক্সেস টোকেনটি আমাদের জানিয়ে দেয় আপনি কে, যার ফলে আমরা নিশ্চিত হতে পারি যে প্রতিষ্ঠানটির বিবরণ দেখার অনুমতি আপনার আছে।

সৌভাগ্যবশত, আপনি Edge OAuth2 পরিষেবাতে আপনার ক্রেডেনশিয়াল পাঠিয়ে একটি টোকেন পেতে পারেন। পরিষেবাটি অ্যাক্সেস এবং রিফ্রেশ টোকেন দিয়ে সাড়া দেয়।

OAuth2 প্রবাহ: প্রাথমিক অনুরোধ

নিচের ছবিটি প্রথমবার এজ এপিআই (Edge API) অ্যাক্সেস করার সময়কার OAuth2 ফ্লোটি দেখায়:

OAuth প্রবাহ: প্রথম অনুরোধ
চিত্র ১: OAuth প্রবাহ: প্রথম অনুরোধ

চিত্র ১-এ যেমন দেখানো হয়েছে, যখন আপনি এজ এপিআই-তে আপনার প্রাথমিক অনুরোধটি করেন:

  1. আপনি একটি অ্যাক্সেস টোকেনের জন্য অনুরোধ করেন। আপনি Edge API , acurl , বা get_token ব্যবহার করে এটি করতে পারেন। উদাহরণস্বরূপ:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Edge OAuth2 পরিষেবাটি একটি অ্যাক্সেস টোকেন দিয়ে সাড়া দেয় এবং সেটি stdout এ প্রিন্ট করে; উদাহরণস্বরূপ:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    acurl এবং get_token ইউটিলিটিগুলো অ্যাক্সেস এবং রিফ্রেশ টোকেনগুলো নীরবে ~/.sso-cli তে সংরক্ষণ করে (রিফ্রেশ টোকেনটি stdout এ লেখা হয় না)। আপনি যদি টোকেন পেতে Edge OAuth2 পরিষেবা ব্যবহার করেন, তবে পরবর্তী ব্যবহারের জন্য আপনাকে সেগুলো নিজে থেকেই সংরক্ষণ করতে হবে।

  3. আপনি অ্যাক্সেস টোকেন সহ Edge API-তে একটি অনুরোধ পাঠান। acurl স্বয়ংক্রিয়ভাবে টোকেনটি সংযুক্ত করে; উদাহরণস্বরূপ:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    আপনি যদি অন্য কোনো HTTP ক্লায়েন্ট ব্যবহার করেন, তাহলে অ্যাক্সেস টোকেনটি যোগ করতে ভুলবেন না। উদাহরণস্বরূপ:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API আপনার অনুরোধটি কার্যকর করে এবং সাধারণত ডেটাসহ একটি প্রতিক্রিয়া ফেরত দেয়।

OAuth2 প্রবাহ: পরবর্তী অনুরোধগুলি

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

OAuth প্রবাহ: পরবর্তী অনুরোধগুলি
চিত্র ২: OAuth প্রবাহ: পরবর্তী অনুরোধসমূহ

চিত্র ২-এ যেমন দেখানো হয়েছে, যখন আপনার কাছে আগে থেকেই একটি অ্যাক্সেস টোকেন থাকে:

  1. আপনি অ্যাক্সেস টোকেন সহ Edge API-তে একটি অনুরোধ পাঠান। acurl স্বয়ংক্রিয়ভাবে টোকেনটি সংযুক্ত করে। আপনি যদি অন্য টুল ব্যবহার করেন, তাহলে আপনাকে টোকেনটি ম্যানুয়ালি যোগ করতে হবে।
  2. Edge API আপনার অনুরোধটি কার্যকর করে এবং সাধারণত ডেটাসহ একটি প্রতিক্রিয়া ফেরত দেয়।

OAuth2 প্রবাহ: যখন আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায়

যখন কোনো অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায় (১২ ঘণ্টা পর), আপনি রিফ্রেশ টোকেন ব্যবহার করে একটি নতুন অ্যাক্সেস টোকেন পেতে পারেন:

OAuth প্রবাহ: অ্যাক্সেস টোকেন রিফ্রেশ করা
চিত্র ৩: OAuth প্রবাহ: অ্যাক্সেস টোকেন রিফ্রেশ করা

চিত্র ৩-এ যেমন দেখানো হয়েছে, যখন আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায়:

  1. আপনি Edge API-তে একটি অনুরোধ পাঠিয়েছেন, কিন্তু আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেছে।
  2. Edge API আপনার অনুরোধটিকে অননুমোদিত হিসেবে প্রত্যাখ্যান করেছে।
  3. আপনি Edge OAuth2 পরিষেবাতে একটি রিফ্রেশ টোকেন পাঠান। আপনি যদি acurl ব্যবহার করেন, তবে এই কাজটি আপনার জন্য স্বয়ংক্রিয়ভাবে করা হয়।
  4. Edge OAuth2 পরিষেবাটি একটি নতুন অ্যাক্সেস টোকেন দিয়ে সাড়া দেয়।
  5. আপনি নতুন অ্যাক্সেস টোকেনটি ব্যবহার করে এজ এপিআই-তে একটি অনুরোধ পাঠান।
  6. Edge API আপনার অনুরোধটি কার্যকর করে এবং সাধারণত ডেটাসহ একটি প্রতিক্রিয়া ফেরত দেয়।

টোকেনগুলো সংগ্রহ করুন

Edge API-তে পাঠানোর মতো একটি অ্যাক্সেস টোকেন পেতে, আপনি curl এর মতো কোনো ইউটিলিটির পাশাপাশি নিম্নলিখিত Apigee ইউটিলিটিগুলো ব্যবহার করতে পারেন:

  • get_token ইউটিলিটি : আপনার Apigee ক্রেডেনশিয়ালগুলির বিনিময়ে অ্যাক্সেস এবং রিফ্রেশ টোকেন প্রদান করে, যা আপনি Edge API কল করার জন্য ব্যবহার করতে পারেন।
  • acurl ইউটিলিটি : একটি সাধারণ curl কমান্ডের জন্য একটি সুবিধাজনক র‍্যাপার প্রদান করে। এটি Edge API-এর জন্য HTTP রিকোয়েস্ট তৈরি করে, get_token থেকে অ্যাক্সেস ও রিফ্রেশ টোকেন সংগ্রহ করে এবং অ্যাক্সেস টোকেনটি Edge API-তে পাঠিয়ে দেয়।
  • Edge OAuth2 পরিষেবার টোকেন এন্ডপয়েন্ট : Edge API-তে কল করার মাধ্যমে আপনার Apigee ক্রেডেনশিয়াল বিনিময় করে অ্যাক্সেস এবং রিফ্রেশ টোকেন সংগ্রহ করুন।

এই ইউটিলিটিগুলো আপনার Apigee অ্যাকাউন্টের ক্রেডেনশিয়াল (ইমেল ঠিকানা এবং পাসওয়ার্ড)-এর বিনিময়ে নিম্নলিখিত মেয়াদের টোকেন প্রদান করে:

  • অ্যাক্সেস টোকেনগুলোর মেয়াদ ১২ ঘণ্টা পর শেষ হয়ে যাবে।
  • রিফ্রেশ টোকেনগুলোর মেয়াদ ৩০ দিনে শেষ হয়ে যায়।

ফলস্বরূপ, একবার আপনি acurl বা get_token ব্যবহার করে সফলভাবে একটি API কল করলে, আপনি ৩০ দিন পর্যন্ত টোকেন জোড়াটি ব্যবহার করতে পারবেন। মেয়াদ শেষ হয়ে গেলে, আপনাকে অবশ্যই আপনার ক্রেডেনশিয়াল পুনরায় প্রবেশ করিয়ে নতুন টোকেন নিতে হবে।

OAuth2 দিয়ে Edge API অ্যাক্সেস করুন

Edge API অ্যাক্সেস করতে, আপনাকে একটি API এন্ডপয়েন্টে অনুরোধ পাঠাতে হবে এবং অ্যাক্সেস টোকেনটি অন্তর্ভুক্ত করতে হবে। আপনি যেকোনো HTTP ক্লায়েন্টের মাধ্যমে এটি করতে পারেন, যার মধ্যে রয়েছে curl এর মতো কমান্ড-লাইন ইউটিলিটি, Postman-এর মতো ব্রাউজার-ভিত্তিক UI, বা acurl মতো Apigee ইউটিলিটি।

পরবর্তী বিভাগগুলিতে acurl এবং curl ব্যবহার করে Edge API অ্যাক্সেস করার পদ্ধতি বর্ণনা করা হয়েছে।

একুর্ল ব্যবহার করুন

acurl ব্যবহার করে Edge API অ্যাক্সেস করতে হলে, আপনার প্রাথমিক অনুরোধে অবশ্যই আপনার ক্রেডেনশিয়াল অন্তর্ভুক্ত থাকতে হবে। Edge OAuth2 পরিষেবাটি অ্যাক্সেস এবং রিফ্রেশ টোকেন দিয়ে সাড়া দেয়। acurl টোকেনগুলো স্থানীয়ভাবে সংরক্ষণ করে।

পরবর্তী অনুরোধগুলিতে, acurl ~/.sso-cli তে সংরক্ষিত টোকেনগুলি ব্যবহার করে, ফলে টোকেনগুলির মেয়াদ শেষ না হওয়া পর্যন্ত আপনাকে আর আপনার ক্রেডেনশিয়াল অন্তর্ভুক্ত করতে হয় না।

নিম্নলিখিত উদাহরণটি একটি প্রাথমিক acurl অনুরোধ দেখায় যা "ahamilton-eval" সংস্থার বিবরণ সংগ্রহ করে:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

সংস্থা সম্পর্কে বিস্তারিত তথ্য পাওয়ার পাশাপাশি, এই উদাহরণটি এমন একটি দ্বিতীয় অনুরোধও দেখায় যা "helloworld" এপিআই প্রক্সির মধ্যে থাকা পলিসিগুলোর একটি তালিকা সংগ্রহ করে। দ্বিতীয় অনুরোধটিতে URL-এ "organizations"-এর সংক্ষিপ্ত রূপ "o" ব্যবহার করা হয়েছে।

মনে রাখবেন যে acurl দ্বিতীয় অনুরোধে স্বয়ংক্রিয়ভাবে অ্যাক্সেস টোকেনটি পাঠিয়ে দেয়। acurl একবার OAuth2 টোকেন সংরক্ষণ করে ফেললে আপনাকে আর আপনার ব্যবহারকারীর পরিচয়পত্র (user credentials) দেওয়ার প্রয়োজন হয় না। এটি পরবর্তী কলগুলোর জন্য ~/.sso-cli থেকে টোকেনটি সংগ্রহ করে।

আরও তথ্যের জন্য, Edge API অ্যাক্সেস করতে acurl-এর ব্যবহার দেখুন।

কার্ল ব্যবহার করুন

আপনি Edge API অ্যাক্সেস করতে curl ব্যবহার করতে পারেন। এটি করার জন্য, আপনাকে প্রথমে অ্যাক্সেস এবং রিফ্রেশ টোকেন সংগ্রহ করতে হবে। আপনি get_token মতো কোনো ইউটিলিটি অথবা Edge OAuth2 পরিষেবা ব্যবহার করে এগুলো পেতে পারেন।

আপনার অ্যাক্সেস টোকেনটি সফলভাবে সংরক্ষণ করার পর, আপনি Edge API-তে করা কলগুলোর Authorization হেডারে সেটি পাস করবেন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

অ্যাক্সেস টোকেনটি ইস্যু করার পর ১২ ঘণ্টার জন্য বৈধ থাকে। অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে, ক্রেডেনশিয়াল ছাড়াই আরেকটি অ্যাক্সেস টোকেন ইস্যু করার জন্য রিফ্রেশ টোকেনটি ৩০ দিন পর্যন্ত ব্যবহার করা যাবে। Apigee প্রতিটি API কলের সাথে ক্রেডেনশিয়াল প্রবেশ করিয়ে নতুন অনুরোধ করার পরিবর্তে, শুধুমাত্র রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়ার পরেই একটি নতুন অ্যাক্সেস টোকেনের জন্য অনুরোধ করার পরামর্শ দেয়।

টোকেনের মেয়াদ শেষ

আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে, আপনাকে পুনরায় ক্রেডেনশিয়াল জমা না দিয়েই রিফ্রেশ টোকেন ব্যবহার করে একটি নতুন অ্যাক্সেস টোকেন পেতে পারেন।

আপনি কোন টুল ব্যবহার করছেন তার উপর নির্ভর করে আপনার অ্যাক্সেস টোকেন কীভাবে রিফ্রেশ করবেন:

  • acurl : কোনো পদক্ষেপের প্রয়োজন নেই। আপনি যখন মেয়াদোত্তীর্ণ টোকেনসহ কোনো অনুরোধ পাঠান, তখন acurl স্বয়ংক্রিয়ভাবে অ্যাক্সেস টোকেনটি রিফ্রেশ করে।
  • get_token : অ্যাক্সেস টোকেন রিফ্রেশ করতে get_token কল করুন।
  • এজ OAuth2 পরিষেবা : একটি অনুরোধ পাঠান যাতে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত থাকবে:
    • টোকেন রিফ্রেশ করুন
    • grant_type ফর্ম প্যারামিটার "refresh_token"-এ সেট করা হয়েছে

মেশিন ব্যবহারকারীদের জন্য OAuth2

আপনি মেশিন ব্যবহারকারীদের জন্য OAuth2 অথেনটিকেশন সহ Edge API-গুলিতে স্বয়ংক্রিয় অ্যাক্সেস স্ক্রিপ্ট করার জন্য acurl এবং get_token ইউটিলিটিগুলি ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে get_token ব্যবহার করে একটি অ্যাক্সেস টোকেনের জন্য অনুরোধ করতে হয় এবং তারপরে টোকেন মানটি একটি curl কলে যুক্ত করতে হয়:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

বিকল্পভাবে, আপনি acurl ইউটিলিটি ব্যবহার করে টোকেন অনুরোধ এবং curl কল একত্রিত করতে পারেন। উদাহরণস্বরূপ:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

উভয় উদাহরণেই, -m এর মান একটি খালি স্ট্রিং-এ সেট করলে মেশিন ব্যবহারকারীকে এমএফএ কোডের জন্য অনুরোধ করা হবে না।