ক্লায়েন্ট শংসাপত্র অনুদান প্রকার বাস্তবায়ন করা

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

ক্লায়েন্ট ক্রেডেনশিয়ালস গ্রান্ট টাইপের মাধ্যমে, একটি অ্যাপ তার নিজস্ব ক্রেডেনশিয়ালস (ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট) Apigee Edge-এর এমন একটি এন্ডপয়েন্টে পাঠায় যা অ্যাক্সেস টোকেন তৈরি করার জন্য সেট আপ করা থাকে। ক্রেডেনশিয়ালসগুলো বৈধ হলে, Edge ক্লায়েন্ট অ্যাপটিকে একটি অ্যাক্সেস টোকেন ফেরত পাঠায়।

এই বিষয় সম্পর্কে

এই টপিকে OAuth 2.0 ক্লায়েন্ট ক্রেডেনশিয়ালস গ্রান্ট টাইপের একটি সাধারণ বিবরণ দেওয়া হয়েছে এবং Apigee Edge-এ এই ফ্লোটি কীভাবে বাস্তবায়ন করতে হয় তা আলোচনা করা হয়েছে।

ব্যবহারের ক্ষেত্র

সাধারণত, এই গ্রান্ট টাইপটি তখনই ব্যবহৃত হয় যখন অ্যাপটি নিজেই রিসোর্সের মালিক হয়। উদাহরণস্বরূপ, কোনো অ্যাপকে তার কাজ সম্পাদনের জন্য ব্যবহৃত ডেটা সংরক্ষণ ও পুনরুদ্ধার করতে একটি ব্যাকএন্ড ক্লাউড-ভিত্তিক স্টোরেজ পরিষেবা অ্যাক্সেস করার প্রয়োজন হতে পারে, যা সরাসরি শেষ ব্যবহারকারীর মালিকানাধীন ডেটার পরিবর্তে ব্যবহৃত হয়। এই গ্রান্ট টাইপ ফ্লোটি কঠোরভাবে একটি ক্লায়েন্ট অ্যাপ এবং অথরাইজেশন সার্ভারের মধ্যে ঘটে। একজন শেষ ব্যবহারকারী এই গ্রান্ট টাইপ ফ্লোতে অংশগ্রহণ করেন না।

ভূমিকা

রোলগুলো সেই 'অ্যাক্টর' বা অংশগ্রহণকারীদের নির্দিষ্ট করে, যারা OAuth ফ্লো-তে অংশ নেয়। Apigee Edge কোথায় খাপ খায়, তা বোঝানোর জন্য চলুন ক্লায়েন্ট ক্রেডেনশিয়াল রোলগুলোর একটি সংক্ষিপ্ত পর্যালোচনা করা যাক। OAuth 2.0 রোলগুলোর সম্পূর্ণ আলোচনার জন্য, IETF OAuth 2.0 স্পেসিফিকেশন দেখুন।

  • ক্লায়েন্ট অ্যাপ — যে অ্যাপটির ব্যবহারকারীর সুরক্ষিত রিসোর্স অ্যাক্সেস করার প্রয়োজন হয়। সাধারণত, এই পদ্ধতিতে অ্যাপটি ব্যবহারকারীর ল্যাপটপ বা ডিভাইসে স্থানীয়ভাবে চলার পরিবর্তে সার্ভারে চলে।
  • Apigee Edge -- এই প্রক্রিয়ায়, Apigee Edge হলো OAuth অনুমোদন সার্ভার। এর কাজ হলো অ্যাক্সেস টোকেন তৈরি করা, অ্যাক্সেস টোকেন যাচাই করা এবং সুরক্ষিত রিসোর্সের জন্য অনুমোদিত অনুরোধগুলো রিসোর্স সার্ভারে পাঠিয়ে দেওয়া।
  • রিসোর্স সার্ভার — এটি হলো সেই ব্যাকএন্ড পরিষেবা যা সুরক্ষিত ডেটা সংরক্ষণ করে, যে ডেটা অ্যাক্সেস করার জন্য ক্লায়েন্ট অ্যাপের অনুমতির প্রয়োজন হয়। আপনি যদি Apigee Edge-এ হোস্ট করা API প্রক্সিগুলোকে সুরক্ষিত করেন, তাহলে Apigee Edge-ই রিসোর্স সার্ভার হিসেবে কাজ করবে।

কোডের নমুনা

আপনি গিটহাবে ক্লায়েন্ট ক্রেডেনশিয়ালস গ্রান্ট টাইপের একটি সম্পূর্ণ ও কার্যকরী নমুনা বাস্তবায়ন খুঁজে পেতে পারেন। আরও উদাহরণের লিঙ্কের জন্য নিচে অতিরিক্ত রিসোর্স দেখুন।

প্রবাহ চিত্র

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


ক্লায়েন্ট ক্রেডেনশিয়াল প্রবাহের ধাপসমূহ

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

পূর্বশর্ত: ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট কী পেতে ক্লায়েন্ট অ্যাপটিকে অবশ্যই Apigee Edge-এর সাথে নিবন্ধিত করতে হবে। বিস্তারিত জানতে ‘ক্লায়েন্ট অ্যাপ নিবন্ধন’ দেখুন।

১. ক্লায়েন্ট একটি অ্যাক্সেস টোকেনের জন্য অনুরোধ করে।

অ্যাক্সেস টোকেন পাওয়ার জন্য, ক্লায়েন্ট একটি নিবন্ধিত ডেভেলপার অ্যাপ থেকে প্রাপ্ত ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট-এর মান সহ Edge-এ একটি API কল POST করে। এছাড়াও, grant_type=client_credentials প্যারামিটারটি একটি কোয়েরি প্যারামিটার হিসেবে অবশ্যই পাস করতে হবে। (তবে, আপনি এই প্যারামিটারটিকে রিকোয়েস্ট হেডার বা বডিতে গ্রহণ করার জন্য OAuthV2 পলিসি কনফিগার করতে পারেন — বিস্তারিত জানতে OAuthV2 পলিসি দেখুন)।

উদাহরণস্বরূপ:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials&client_id=ns4fQc14Zg4hKFCNaSzArVuwszX95X&client_secret=ZIjFyTsNgQNyxI'

দ্রষ্টব্য: যদিও আপনি উপরে দেখানো পদ্ধতিতে client_id এবং client_secret ভ্যালুগুলোকে কোয়েরি প্যারামিটার হিসেবে পাস করতে পারেন, তবে Authorization হেডারে সেগুলোকে একটি base64 URL এনকোডেড স্ট্রিং হিসেবে পাস করা উত্তম। এটি করার জন্য, আপনাকে একটি base64 এনকোডিং টুল বা ইউটিলিটি ব্যবহার করে দুটি ভ্যালুকে কোলন দিয়ে আলাদা করে একসাথে এনকোড করতে হবে। যেমন: aBase64EncodeFunction(clientidvalue:clientsecret)। সুতরাং, উপরের উদাহরণটি এভাবে এনকোড করা হবে:

result = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // লক্ষ্য করুন, দুটি মানকে আলাদা করার জন্য কোলন ব্যবহার করা হয়েছে।

উপরের স্ট্রিংটিকে বেস৬৪ (base64) এনকোড করার ফলাফল হলো: bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==

তারপর, এইভাবে টোকেনের জন্য অনুরোধ করুন:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg=='

২. Edge পরিচয়পত্র যাচাই করে।

লক্ষ্য করুন যে এপিআই কলটি /accesstoken এন্ডপয়েন্টে পাঠানো হয়। এই এন্ডপয়েন্টের সাথে একটি পলিসি সংযুক্ত থাকে যা অ্যাপের ক্রেডেনশিয়াল যাচাই করে। অর্থাৎ, পলিসিটি জমা দেওয়া কী-গুলোকে সেই কী-গুলোর সাথে তুলনা করে যা অ্যাপটি রেজিস্টার করার সময় Apigee Edge তৈরি করেছিল। আপনি যদি Edge-এ OAuth এন্ডপয়েন্ট সম্পর্কে আরও জানতে চান, তাহলে "Configuring OAuth endpoints and policies" দেখুন।

৩. Edge একটি প্রতিক্রিয়া ফেরত দেয়

ক্রেডেনশিয়ালগুলো ঠিক থাকলে, Edge ক্লায়েন্টকে একটি অ্যাক্সেস টোকেন ফেরত পাঠায়। অন্যথায়, একটি ত্রুটি দেখানো হয়।

৪. ক্লায়েন্ট সুরক্ষিত এপিআই-কে কল করে।

এখন, একটি বৈধ অ্যাক্সেস টোকেন থাকলে, ক্লায়েন্ট সুরক্ষিত এপিআই-তে কল করতে পারে। এই ক্ষেত্রে, অনুরোধগুলি Apigee Edge (প্রক্সি)-এর কাছে পাঠানো হয়, এবং টার্গেট রিসোর্স সার্ভারে এপিআই কলটি পাঠানোর আগে অ্যাক্সেস টোকেনটি যাচাই করার দায়িত্ব Edge-এর থাকে। একটি উদাহরণের জন্য, নিচে "সুরক্ষিত এপিআই কল করা" অংশটি দেখুন।

প্রবাহ এবং নীতিমালা কনফিগার করা

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

কাস্টম ফ্লো কনফিগারেশন

এপিআই প্রক্সি ফ্লো কীভাবে কনফিগার করা হয়েছে তা দেখানোর সবচেয়ে সহজ উপায় হলো এক্সএমএল ফ্লো ডেফিনিশনটি দেখানো। এখানে একটি অ্যাক্সেস টোকেন অনুরোধ প্রক্রিয়া করার জন্য ডিজাইন করা একটি এপিআই প্রক্সি ফ্লো-এর উদাহরণ দেওয়া হলো। উদাহরণস্বরূপ, যখন একটি অনুরোধ আসে এবং পাথ সাফিক্সটি /accesstoken-এর সাথে মিলে যায়, তখন GetAccessToken পলিসিটি ট্রিগার হয়। এই ধরনের একটি কাস্টম ফ্লো তৈরি করার জন্য প্রয়োজনীয় ধাপগুলোর একটি সংক্ষিপ্ত বিবরণের জন্য “Configuring OAuth endpoints and policies” দেখুন।

<Flows>
  <Flow name="GetAccessToken">
         <!-- This policy flow is triggered when the URI path suffix
         matches /oauth/accesstoken. Publish this URL to app developers 
         to use when obtaining an access token using an auth code   
         -->
    <Condition>proxy.pathsuffix == "/oauth/accesstoken"</Condition>
    <Request>
        <Step><Name>GetAccessToken</Name></Step>
    </Request>
  </Flow>
</Flows>

একটি পলিসি দিয়ে ফ্লোটি কনফিগার করুন।

আপনাকে নিম্নলিখিতভাবে এন্ডপয়েন্টের সাথে একটি পলিসি সংযুক্ত করতে হবে। একটি প্রক্সি এন্ডপয়েন্টে OAuthV2 পলিসি যোগ করার জন্য প্রয়োজনীয় ধাপগুলোর একটি সংক্ষিপ্ত বিবরণের জন্য “Configuring OAuth endpoints and policies” দেখুন।

অ্যাক্সেস টোকেন পান

এই পলিসিটি /accesstoken পাথের সাথে সংযুক্ত। এটি GenerateAccessToken অপারেশন নির্দিষ্ট করা OAuthV2 পলিসি ব্যবহার করে।

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse/>
</OAuthV2>

অ্যাক্সেস টোকেন পাওয়ার জন্য এপিআই কলটি একটি POST রিকোয়েস্ট এবং এতে একটি Authorization হেডার থাকে, যেখানে base64 এনকোডেড client_id + client + secret এবং grant_type=client_credentials কোয়েরি প্যারামিটারটি থাকে। এতে scope এবং state-এর জন্য ঐচ্ছিক প্যারামিটারও অন্তর্ভুক্ত থাকতে পারে। উদাহরণস্বরূপ:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'

অ্যাক্সেস টোকেন যাচাইকরণ নীতি সংযুক্ত করা হচ্ছে

আপনার API-কে OAuth 2.0 নিরাপত্তা দিয়ে সুরক্ষিত করতে, আপনাকে VerifyAccessToken অপারেশন সহ একটি OAuthV2 পলিসি যোগ করতে হবে। এই পলিসিটি যাচাই করে যে আগত অনুরোধগুলিতে একটি বৈধ অ্যাক্সেস টোকেন আছে কিনা। টোকেনটি বৈধ হলে, Edge অনুরোধটি প্রসেস করে। এটি বৈধ না হলে, Edge একটি এরর দেখায়। প্রাথমিক ধাপগুলোর জন্য, "অ্যাক্সেস টোকেন যাচাইকরণ" দেখুন।

<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken">
    <DisplayName>VerifyAccessToken</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>VerifyAccessToken</Operation>
    <SupportedGrantTypes/>
    <GenerateResponse enabled="true"/>
    <Tokens/>
</OAuthV2>

সুরক্ষিত এপিআই কল করা হচ্ছে

OAuth 2.0 নিরাপত্তা দ্বারা সুরক্ষিত কোনো API কল করতে, আপনাকে একটি বৈধ অ্যাক্সেস টোকেন উপস্থাপন করতে হবে। সঠিক পদ্ধতিটি হলো Authorization হেডারে টোকেনটি অন্তর্ভুক্ত করা, যেমনটি নিচে দেখানো হলো: উল্লেখ্য যে, অ্যাক্সেস টোকেনকে 'বেয়ারার টোকেন' নামেও উল্লেখ করা হয়।

$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \
  http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282 

আরও দেখুন অ্যাক্সেস টোকেন পাঠানো

অতিরিক্ত সম্পদ

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