Edge API অ্যাক্সেস করার জন্য OAuth2 ব্যবহার করা

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

Apigee Edge আপনাকে Edge API কল করতে দেয় যা OAuth2 টোকেন দিয়ে যাচাই করা হয়। ক্লাউড অ্যাকাউন্টের জন্য Edge-এ OAuth2-এর সুবিধা ডিফল্ট হিসেবে চালু করা থাকে। আপনি যদি প্রাইভেট ক্লাউডের জন্য Edge ব্যবহার করেন, তাহলে প্রথমে 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 ফ্লো: প্রথম অনুরোধ

ছবি ১-এ দেখানো হয়েছে, Edge API-তে প্রাথমিক অনুরোধ করার সময়:

  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. আপনি নতুন অ্যাক্সেস টোকেন সহ Edge API-তে একটি অনুরোধ পাঠান।
  6. Edge API আপনার অনুরোধ এক্সিকিউট করে এবং সাধারণত ডেটা সহ উত্তর দেয়।

টোকেন পাওয়া

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

  • get_token ইউটিলিটি: Edge API কল করার জন্য ব্যবহার করতে পারেন এমন অ্যাক্সেস ও রিফ্রেশ টোকেনের জন্য আপনার Apigee ক্রেডেনশিয়াল এক্সচেঞ্জ করে।
  • 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 ব্যবহার করা

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" API প্রক্সির মধ্যে থাকা নীতির তালিকা পায়। দ্বিতীয় অনুরোধে URL-এ "organizations"-এর পরিবর্তে "o" ব্যবহার করা হয়েছে।

মনে রাখবেন, acurl দ্বিতীয় অনুরোধে অটোমেটিক অ্যাক্সেস টোকেন পাস করে দেয়। acurl OAuth2 টোকেন স্টোর করলে আপনাকে আর নিজের ব্যবহারকারীর ক্রেডেনশিয়াল দিতে হবে না। এটি পরবর্তী কলের জন্য ~/.sso-cli থেকে টোকেন পায়।

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

curl ব্যবহার করা

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-এ কল করুন।
  • Edge 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/...'

এছাড়াও, আপনি টোকেন অনুরোধ এবং curl কলকে acurl ইউটিলিটি ব্যবহার করে একত্রিত করতে পারেন। যেমন:

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

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