আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
ক্লায়েন্ট ক্রেডেনশিয়াল গ্রান্ট টাইপের মাধ্যমে, কোনও অ্যাপ 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 হল রিসোর্স সার্ভার।
কোডের স্যাম্পেল
GitHub-এ আপনি ক্লায়েন্ট ক্রেডেনশিয়াল গ্রান্ট টাইপের একটি সম্পূর্ণ, কার্যকরী স্যাম্পেল ইমপ্লিমেন্টেশন খুঁজে পাবেন। আরও উদাহরণের লিঙ্ক পেতে, নিচে অতিরিক্ত রিসোর্স দেখুন।
ফ্লো ডায়াগ্রাম
নিচের ফ্লো ডায়াগ্রামটি ক্লায়েন্ট ক্রেডেনশিয়াল ফ্লোকে ব্যাখ্যা করে, যেখানে Apigee Edge অনুমোদন সার্ভার হিসেবে কাজ করে। সাধারণত, এই ফ্লোতে Edge হল রিসোর্স সার্ভার -- অর্থাৎ, API প্রক্সি হল সুরক্ষিত রিসোর্স।

ক্লায়েন্ট ক্রেডেনশিয়াল ফ্লোয়ের ধাপ
ক্লায়েন্ট ক্রেডেনশিয়াল কোড গ্রান্টের ধরন প্রয়োগ করার জন্য প্রয়োজনীয় ধাপের সারসংক্ষেপ এখানে দেওয়া হল যেখানে Apigee Edge অথরাইজেশন সার্ভার হিসেবে কাজ করে। মনে রাখবেন, এই ফ্লোতে ক্লায়েন্ট অ্যাপ কেবলমাত্র তার ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট দেখায় এবং সেগুলি সঠিক হলে, Apigee Edge একটি অ্যাক্সেস টোকেন রিটার্ন করে।
পূর্বশর্ত: ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট কী পেতে ক্লায়েন্ট অ্যাপকে Apigee Edge-এ রেজিস্টার করতে হবে। বিবরণের জন্য ক্লায়েন্ট অ্যাপ রেজিস্টার করা দেখুন।
১. ক্লায়েন্ট একটি অ্যাক্সেস টোকেনের অনুরোধ করে
অ্যাক্সেস টোকেন পেতে, ক্লায়েন্ট Edge-এ একটি API কল পোস্ট করে, যার মধ্যে ক্লায়েন্ট আইডি এবং রেজিস্টার করা ডেভেলপার অ্যাপ থেকে প্রাপ্ত ক্লায়েন্ট সিক্রেট থাকে। এছাড়াও, কোয়েরি প্যারামিটার হিসেবে 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) // Note the colon separating the two values.
উপরের স্ট্রিং 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 ক্রেডেনশিয়াল যাচাই করে দেখে
মনে রাখবেন, API কলটি /accesstoken এন্ডপয়েন্টে পাঠানো হয়। এই এন্ডপয়েন্টে একটি নীতি অ্যাটাচ করা আছে যা অ্যাপের ক্রেডেনশিয়াল যাচাই করে। অর্থাৎ, নীতিটি জমা দেওয়া কী-এর সাথে সেইসব কী তুলনা করে যা অ্যাপ রেজিস্টার করার সময় Apigee Edge তৈরি করেছিল। আপনি যদি Edge-এ OAuth এন্ডপয়েন্ট সম্পর্কে আরও জানতে চান, তাহলে OAuth এন্ডপয়েন্ট ও নীতি কনফিগার করালিঙ্কে দেখুন।
৩. Edge একটি উত্তর দেয়
ক্রেডেনশিয়াল ঠিক থাকলে, Edge ক্লায়েন্টকে একটি অ্যাক্সেস টোকেন ফেরত দেয়। তা না হলে, একটি সমস্যা রিটার্ন করা হয়।
৪. ক্লায়েন্ট সুরক্ষিত API কল করে
এখন, সঠিক অ্যাক্সেস টোকেন সহ ক্লায়েন্ট সুরক্ষিত API-তে কল করতে পারবে। এই সিনারিওতে, Apigee Edge (প্রক্সি)-কে অনুরোধ করা হয় এবং Edge-এর দায়িত্ব হল টার্গেট রিসোর্স সার্ভারে API কল পাঠানোর আগে অ্যাক্সেস টোকেন যাচাই করা। যেমন, নিচে সুরক্ষিত API কল করা দেখুন।
ফ্লো ও নীতি কনফিগার করা
অনুমোদন সার্ভার হিসেবে, Edge অ্যাক্সেস টোকেনের অনুরোধ প্রসেস করে। API ডেভেলপার হিসেবে, আপনাকে টোকেন সংক্রান্ত অনুরোধ ম্যানেজ করার জন্য কাস্টম ফ্লো সহ একটি প্রক্সি তৈরি করতে হবে এবং একটি OAuthV2 নীতি যোগ ও কনফিগার করতে হবে। এই বিভাগে সেই এন্ডপয়েন্ট কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে।
কাস্টম ফ্লো কনফিগারেশন
API প্রক্সি ফ্লো কীভাবে কনফিগার করা হয় তা দেখানোর সবচেয়ে সহজ উপায় হল XML ফ্লো সংজ্ঞা দেখানো। অ্যাক্সেস টোকেন সংক্রান্ত অনুরোধ প্রসেস করার জন্য ডিজাইন করা API প্রক্সি ফ্লোয়ের একটি উদাহরণ এখানে দেওয়া হল। যেমন, কোনও অনুরোধ এলে এবং পাথ সাফিক্স /accesstoken-এর সাথে ম্যাচ করলে, GetAccessToken নীতি ট্রিগার হয়। এই ধরনের কাস্টম ফ্লো তৈরি করার জন্য প্রয়োজনীয় ধাপের একটি সংক্ষিপ্ত ওভারভিউ পেতে, OAuth কনফিগার করা এন্ডপয়েন্ট ও নীতি দেখুন।
<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 নীতি যোগ করার জন্য প্রয়োজনীয় ধাপগুলির সংক্ষিপ্ত ওভারভিউ পেতে, OAuth কনফিগার করা এন্ডপয়েন্ট ও নীতি দেখুন।
অ্যাক্সেস টোকেন পাওয়া
এই নীতি /accesstoken পাথের সাথে অ্যাটাচ করা আছে। এতে নির্দিষ্ট GenerateAccessToken অপারেশন সহ OAuthV2
নীতি ব্যবহার করা হয়।
<OAuthV2 name="GetAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>3600000</ExpiresIn>
<SupportedGrantTypes>
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<GenerateResponse/>
</OAuthV2>অ্যাক্সেস টোকেন পাওয়ার জন্য API কল হল একটি POST এবং এতে base64 এনকোড করা client_id + client+secret এবং কোয়েরি প্যারামিটার grant_type=client_credentials সহ একটি অনুমোদন হেডার থাকে। এতে স্কোপ ও স্টেটের জন্য ঐচ্ছিক প্যারামিটারও থাকতে পারে। যেমন:
$ 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'
যাচাই করা অ্যাক্সেস টোকেন নীতি অ্যাটাচ করা হচ্ছে
OAuth 2.0 সুরক্ষা দিয়ে আপনার API সুরক্ষিত করতে, আপনাকে 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>সুরক্ষিত API কল করা
OAuth 2.0 নিরাপত্তা দিয়ে সুরক্ষিত API কল করতে, আপনাকে একটি বৈধ অ্যাক্সেস টোকেন দেখাতে হবে। সঠিক প্যাটার্ন হল, অনুমোদনের হেডার হিসেবে টোকেন যোগ করা, যেমন: মনে রাখবেন অ্যাক্সেস টোকেনকে "বিয়ারার টোকেন"ও বলা হয়।
$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \ http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282
এছাড়াও, অ্যাক্সেস টোকেন পাঠানো দেখুন।
অতিরিক্ত রিসোর্স
- Apigee API ডেভেলপারদের জন্য অনলাইন ট্রেনিং অফার করে, যার মধ্যে OAuth সহ API সুরক্ষা সংক্রান্ত কোর্স অন্তর্ভুক্ত।
- OAuthV2 নীতি -- Has lots of examples showing how to make requests to the authorization server and how to configure the OAuthV2 নীতি।