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

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

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

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

এই বিষয়টি 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 এর সাথে ক্লায়েন্ট শংসাপত্রের প্রবাহকে চিত্রিত করে। সাধারণভাবে, এজ হল এই প্রবাহে রিসোর্স সার্ভার - অর্থাৎ, API প্রক্সিগুলি হল সুরক্ষিত সম্পদ।


ক্লায়েন্ট শংসাপত্র প্রবাহের ধাপগুলি

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

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

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

একটি অ্যাক্সেস টোকেন পেতে, ক্লায়েন্ট একটি নিবন্ধিত বিকাশকারী অ্যাপ থেকে প্রাপ্ত ক্লায়েন্ট আইডি এবং ক্লায়েন্ট গোপনীয়তার মান সহ এজ-এ একটি 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'

দ্রষ্টব্য: যদিও আপনি ক্লায়েন্ট_আইডি এবং ক্লায়েন্ট_সিক্রেট মানগুলিকে উপরে দেখানো হিসাবে ক্যোয়ারী প্যারামিটার হিসাবে পাস করতে পারেন, তবে অনুমোদন হেডারে একটি বেস64 ইউআরএল এনকোড করা স্ট্রিং হিসাবে সেগুলি পাস করা একটি ভাল অনুশীলন। এটি করার জন্য, আপনাকে একটি বেস 64 এনকোডিং টুল বা ইউটিলিটি ব্যবহার করতে হবে যাতে দুটি মান একসাথে এনকোড করে কোলন আলাদা করে। এটির মত: aBase64EncodeFunction(clientidvalue:clientsecret)। সুতরাং, উপরের উদাহরণটি এইরকম এনকোড করা হবে:

ফলাফল = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // নোট করুন কোলন দুটি মান আলাদা করে।

উপরের স্ট্রিংটিকে বেস64 এনকোড করার ফলাফল হল: 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=='

2. এজ শংসাপত্রগুলি যাচাই করে৷

মনে রাখবেন যে API কলটি /accesstoken এন্ডপয়েন্টে পাঠানো হয়। এই এন্ডপয়েন্টের সাথে একটি নীতি সংযুক্ত রয়েছে যা অ্যাপের শংসাপত্রগুলিকে যাচাই করে৷ অর্থাৎ, অ্যাপটি নিবন্ধিত হওয়ার সময় অ্যাপিজি এজ তৈরি করা কীগুলির সাথে নীতিটি জমা দেওয়া কীগুলির তুলনা করে৷ আপনি যদি এজ-এ OAuth এন্ডপয়েন্ট সম্পর্কে আরও জানতে চান, OAuth এন্ডপয়েন্ট কনফিগার করা এবং নীতিগুলি দেখুন।

3. এজ একটি প্রতিক্রিয়া প্রদান করে

শংসাপত্রগুলি ঠিক থাকলে, এজ ক্লায়েন্টকে একটি অ্যাক্সেস টোকেন ফেরত দেয়। যদি না হয়, একটি ত্রুটি ফেরত দেওয়া হয়.

4. ক্লায়েন্ট সুরক্ষিত API কল করে

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

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

অনুমোদন সার্ভার হিসাবে, এজ অ্যাক্সেস টোকেনগুলির জন্য অনুরোধগুলি প্রক্রিয়া করে। 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 এনকোডেড ক্লায়েন্ট_আইডি + ক্লায়েন্ট+সিক্রেট এবং ক্যোয়ারী প্যারামিটার 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 নীতি যোগ করতে হবে। এই নীতি পরীক্ষা করে যে আগত অনুরোধগুলির একটি বৈধ অ্যাক্সেস টোকেন আছে। টোকেন বৈধ হলে, এজ অনুরোধটি প্রক্রিয়া করে। যদি এটি বৈধ না হয়, এজ একটি ত্রুটি প্রদান করে। মৌলিক পদক্ষেপের জন্য, অ্যাক্সেস টোকেন যাচাই করা দেখুন।

<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 ডেভেলপারদের জন্য অনলাইন প্রশিক্ষণ প্রদান করে, যার মধ্যে API নিরাপত্তার একটি কোর্স রয়েছে, যার মধ্যে OAuth অন্তর্ভুক্ত রয়েছে।
  • OAuthV2 নীতি -- অনুমোদন সার্ভারে কীভাবে অনুরোধ করতে হয় এবং কীভাবে OAuthV2 নীতি কনফিগার করতে হয় তা দেখানোর প্রচুর উদাহরণ রয়েছে৷