আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
অনুমোদন কোড হল সবচেয়ে বেশি ব্যবহৃত OAuth 2.0 অনুদানের ধরনগুলির মধ্যে একটি৷ অনুমোদন কোড ফ্লো হল একটি "থ্রি-লেগড OAuth" কনফিগারেশন। এই কনফিগারেশনে, ব্যবহারকারী নিজেকে রিসোর্স সার্ভারের সাথে প্রমাণীকরণ করে এবং ক্লায়েন্ট অ্যাপে ব্যবহারকারীর নাম/পাসওয়ার্ড প্রকাশ না করে তাদের সুরক্ষিত সংস্থানগুলি অ্যাক্সেস করার জন্য অ্যাপটিকে সম্মতি দেয়।
এই বিষয় সম্পর্কে
এই বিষয়টি OAuth 2.0 অনুমোদনের অনুদানের প্রকার প্রবাহের একটি সাধারণ বিবরণ এবং ওভারভিউ প্রদান করে এবং Apigee Edge-এ এই প্রবাহটি কীভাবে বাস্তবায়ন করা যায় তা আলোচনা করে।
ভিডিও
আপনার APIগুলিকে সুরক্ষিত করতে OAuth 2.0 অনুমোদন অনুদানের ধরন কীভাবে ব্যবহার করবেন তা শিখতে একটি ছোট ভিডিও দেখুন৷
কেস ব্যবহার করুন
এই অনুদানের ধরনটি এমন অ্যাপগুলির জন্য উদ্দিষ্ট যেগুলি তৃতীয় পক্ষের বিকাশকারীদের দ্বারা লেখা যাদের API প্রদানকারীর সাথে বিশ্বস্ত ব্যবসায়িক সম্পর্ক নেই৷ উদাহরণস্বরূপ, যে সকল ডেভেলপাররা সর্বজনীন API প্রোগ্রামগুলির জন্য নিবন্ধন করেন তাদের সাধারণত বিশ্বাস করা উচিত নয়। এই অনুদানের প্রকারের সাথে, রিসোর্স সার্ভারে ব্যবহারকারীর শংসাপত্রগুলি কখনই অ্যাপের সাথে ভাগ করা হয় না।
কোড নমুনা
আপনি GitHub-এ api-platform-samples
repo-তে Apigee Edge-এ অনুমোদন কোড অনুদান প্রকারের একটি সম্পূর্ণ, কার্যকরী নমুনা বাস্তবায়ন খুঁজে পেতে পারেন। api-platform-samples/sample-proxies ডিরেক্টরিতে oauth-উন্নত নমুনা দেখুন। নমুনার বিস্তারিত জানার জন্য README ফাইলটি দেখুন।
প্রবাহ চিত্র
নিম্নলিখিত ফ্লো ডায়াগ্রামটি অনুমোদন সার্ভার হিসাবে Apigee Edge এর সাথে অনুমোদন কোড OAuth প্রবাহকে চিত্রিত করে৷
টিপ: এই ডায়াগ্রামের একটি বড় সংস্করণ দেখতে, এটিকে ডান-ক্লিক করুন এবং এটি একটি নতুন ট্যাবে খুলুন, অথবা এটি সংরক্ষণ করুন এবং একটি চিত্র দর্শকে এটি খুলুন৷
অনুমোদন কোড প্রবাহের ধাপ
অনুমোদন কোড অনুদানের ধরনটি বাস্তবায়নের জন্য প্রয়োজনীয় পদক্ষেপগুলির একটি সারাংশ এখানে রয়েছে যেখানে Apigee Edge অনুমোদন সার্ভার হিসাবে কাজ করে। মনে রাখবেন, এই প্রবাহের চাবিকাঠি হল যে ক্লায়েন্ট কখনই রিসোর্স সার্ভারে ব্যবহারকারীর শংসাপত্র দেখতে পায় না।
পূর্বশর্ত: ক্লায়েন্ট আইডি এবং ক্লায়েন্ট গোপন কী পেতে ক্লায়েন্ট অ্যাপটি অবশ্যই Apigee Edge-এর সাথে নিবন্ধিত হতে হবে। বিস্তারিত জানার জন্য ক্লায়েন্ট অ্যাপ্লিকেশন নিবন্ধন দেখুন.
1. ব্যবহারকারী প্রবাহ শুরু করে
যখন অ্যাপটিকে কোনও রিসোর্স সার্ভার থেকে ব্যবহারকারীর সুরক্ষিত সংস্থানগুলি অ্যাক্সেস করার প্রয়োজন হয় (উদাহরণস্বরূপ, কোনও সোশ্যাল মিডিয়া সাইটে পরিচিতির তালিকা), এটি অ্যাপিজি এজ-এ একটি API কল পাঠায়, যা ক্লায়েন্টের আইডি যাচাই করে এবং যদি এটি বৈধ হয় তবে ব্যবহারকারীর আইডিকে পুনঃনির্দেশ করে। একটি লগইন পৃষ্ঠায় ব্রাউজার যেখানে ব্যবহারকারী তাদের শংসাপত্র লিখবে। এপিআই কলে ক্লায়েন্ট অ্যাপটি নিবন্ধিত হওয়ার সময় প্রাপ্ত তথ্য অন্তর্ভুক্ত করে: ক্লায়েন্ট আইডি এবং ইউআরআই পুনর্নির্দেশ।
2. ব্যবহারকারী শংসাপত্র প্রবেশ করে
ব্যবহারকারী এখন একটি লগইন পৃষ্ঠা দেখতে পান যেখানে তাদের লগইন শংসাপত্রগুলি প্রবেশ করতে বলা হয়৷ লগইন সফল হলে, আমরা পরবর্তী ধাপে যাই।
3. ব্যবহারকারী সম্মতি দেয়
এই ধাপে, ব্যবহারকারী তাদের সংস্থানগুলি অ্যাক্সেস করার জন্য অ্যাপটিকে সম্মতি দেয়। সম্মতি ফর্মে সাধারণত সুযোগ নির্বাচন অন্তর্ভুক্ত থাকে, যেখানে ব্যবহারকারী রিসোর্স সার্ভারে অ্যাপটিকে কী করার অনুমতি দেওয়া হয়েছে তা চয়ন করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারী শুধুমাত্র-পঠন অনুমতি দিতে পারেন, বা সংস্থানগুলি আপডেট করার জন্য অ্যাপটিকে অনুমতি দিতে পারেন৷
4. লগইন অ্যাপ Apigee Edge একটি অনুরোধ পাঠায়
লগইন এবং সম্মতি সফল হলে, লগইন অ্যাপ Apigee Edge-এর /authorizationcode এন্ডপয়েন্টে ডেটা পোস্ট করে। ডেটার মধ্যে রয়েছে পুনঃনির্দেশিত URI, ক্লায়েন্ট আইডি, স্কোপ, কোনো ব্যবহারকারী-নির্দিষ্ট তথ্য যা এটি অন্তর্ভুক্ত করতে চায় এবং একটি ইঙ্গিত যে লগইন সফল হয়েছে।
5. Apigee Edge একটি অনুমোদন কোড তৈরি করে
যখন এজ তার /অথরাইজেশনকোড এন্ডপয়েন্টে লগইন অ্যাপ থেকে একটি GET অনুরোধ পায়, তখন দুটি জিনিস ঘটে। প্রথমত, এজ নির্ধারণ করে যে লগইন সফল হয়েছে (এইচটিটিপি স্ট্যাটাস বা অন্য কোনো উপায় চেক করে)। নেক্সট এজ চেক করে যে লগইন অ্যাপ থেকে পাঠানো রিডাইরেক্ট ইউআরআই রিডাইরেক্ট ইউআরআই-এর সাথে মেলে যা অ্যাপটি অ্যাপিজি এজ-এর সাথে নিবন্ধিত হওয়ার সময় নির্দিষ্ট করা হয়েছিল। সবকিছু ঠিক থাকলে, এজ একটি অনুমোদন কোড তৈরি করে। যেমন:
http://myorg-test.apigee.net/oauth/authorizationcode?client_id={consumer_key}&response_type=code&redirect_uri={redirect_uri}&scope=scope1%20scope2&state={some_string}
6. এজ ক্লায়েন্টের কাছে অনুমোদন কোড ফেরত পাঠায়
এজ ক্লায়েন্টের কাছে একটি ক্যোয়ারী প্যারামিটার হিসাবে সংযুক্ত প্রমাণীকরণ কোড সহ একটি 302 পুনঃনির্দেশ পাঠায়।
7. ক্লায়েন্ট অনুমোদন কোড পুনরুদ্ধার করে এবং এজ থেকে একটি অ্যাক্সেস কোড অনুরোধ করে
এখন একটি বৈধ প্রমাণীকরণ কোড সহ, ক্লায়েন্ট এজ থেকে একটি অ্যাক্সেস টোকেন অনুরোধ করতে পারে। এটি ক্লায়েন্ট আইডি এবং ক্লায়েন্ট গোপন কী (অ্যাপটি এজে নিবন্ধিত হওয়ার সময় প্রাপ্ত), অনুদানের ধরন এবং সুযোগ পোস্ট করার মাধ্যমে এটি করে। ক্লায়েন্ট আইডি এবং গোপন কীগুলি অন্তর্ভুক্ত করে Apigee Edge যাচাই করতে পারে যে ক্লায়েন্ট অ্যাপটি নিবন্ধিত ছিল। যেমন:
$ curl https://{org_name}-test.apigee.net/my_oauth_proxy/accesstoken?code=Xyz123&grant_type=authorization_code -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpKNhGar6K&client_secret=hAr4GngA9vAyvI4'
8. ক্লায়েন্ট একটি অ্যাক্সেস টোকেন পায়
সবকিছু সফল হলে, এজ ক্লায়েন্টকে একটি অ্যাক্সেস টোকেন ফেরত দেয়। অ্যাক্সেস টোকেনের মেয়াদ শেষ হবে এবং এটি শুধুমাত্র ব্যবহারকারীর দ্বারা নির্দিষ্ট সুযোগের জন্য বৈধ হবে যখন তারা তাদের সংস্থানগুলি অ্যাক্সেস করার জন্য অ্যাপটিকে সম্মতি দেয়।
9. ক্লায়েন্ট সুরক্ষিত API কল করে
এখন, একটি বৈধ অ্যাক্সেস কোড সহ, ক্লায়েন্ট সুরক্ষিত API এ কল করতে পারে। এই পরিস্থিতিতে, Apigee এজ (প্রক্সি) এর কাছে অনুরোধ করা হয় এবং এজ টার্গেট রিসোর্স সার্ভারে API কল পাস করার আগে অ্যাক্সেস টোকেন যাচাই করার জন্য দায়ী। অ্যাক্সেস টোকেন একটি অনুমোদন শিরোনামে পাস করা হয়. যেমন:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
প্রবাহ এবং নীতি কনফিগার করা
অনুমোদন সার্ভার হিসাবে, এজকে অনেকগুলি OAuth অনুরোধ প্রক্রিয়া করতে হবে: অ্যাক্সেস টোকেন, প্রমাণীকরণ কোড, রিফ্রেশ টোকেন, লগইন পৃষ্ঠা পুনঃনির্দেশ ইত্যাদির জন্য। এই শেষ পয়েন্টগুলি কনফিগার করার জন্য দুটি মৌলিক পদক্ষেপ রয়েছে:
- কাস্টম প্রবাহ তৈরি করা
- OAuthV2 নীতি যোগ করা এবং কনফিগার করা
কাস্টম প্রবাহ কনফিগারেশন
আপনি সাধারণত এই অনুদান প্রকার প্রবাহ কনফিগার করেন যাতে প্রবাহের প্রতিটি ধাপ বা "লেগ" Apigee এজ প্রক্সিতে একটি প্রবাহ দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি প্রবাহের একটি এন্ডপয়েন্ট এবং একটি নীতি থাকে যা প্রয়োজনীয় OAuth-নির্দিষ্ট কার্য সম্পাদন করে, যেমন একটি অনুমোদন কোড বা একটি অ্যাক্সেস টোকেন তৈরি করা। উদাহরণস্বরূপ, নীচের XML-এ দেখানো হিসাবে, /oauth/authorizationcode
এন্ডপয়েন্টে GenerateAuthCode নামে একটি সম্পর্কিত নীতি রয়েছে (যা GenerateAuthorizationCode অপারেশনের সাথে একটি OAuthV2 নীতি নির্দিষ্ট করা হয়েছে)।
ফ্লো কনফিগারেশন দেখানোর সবচেয়ে সহজ উপায় হল একটি XML উদাহরণ। প্রতিটি প্রবাহ সম্পর্কে তথ্যের জন্য ইন-লাইন মন্তব্য দেখুন। এটি একটি উদাহরণ -- প্রবাহ এবং পথের নাম আপনি ইচ্ছামত কনফিগার করা যেতে পারে। এইরকম একটি কাস্টম প্রবাহ তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপগুলির একটি দ্রুত ওভারভিউয়ের জন্য OAuth এন্ডপয়েন্ট এবং নীতিগুলি কনফিগার করাও দেখুন৷
GitHub এ উদাহরণ বাস্তবায়ন দেখুন।
<Flows>
<Flow name="RedirectToLoginApp">
<!--
Publish this URI to developers to use for their 'login' link
-->
<Condition>proxy.pathsuffix == "/oauth/authorize"</Condition>
<Request>
<Step><Name>RedirectToLoginPage</Name></Step>
</Request>
</Flow>
<Flow name="GetAuthCode">
<!--
Call this URL from your Login app after you authenticate the user.
The policy will automatically return the auth code in the response to the
redirect_uri registered by the calling app
-->
<Condition>proxy.pathsuffix == "/oauth/authorizationcode"</Condition>
<Request>
<Step><Name>GenerateAuthCode</Name></Step>
</Request>
</Flow>
<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>GenerateAccessToken</Name></Step>
</Request>
</Flow>
</Flows>
নীতির সাথে প্রবাহ কনফিগার করুন
প্রতিটি এন্ডপয়েন্ট এর সাথে সম্পর্কিত একটি নীতি আছে। আসুন নীতিগুলির উদাহরণ দেখি। এছাড়াও প্রক্সি এন্ডপয়েন্টে OAuthV2 নীতিগুলি যোগ করার জন্য প্রয়োজনীয় পদক্ষেপগুলির একটি দ্রুত ওভারভিউয়ের জন্য OAuth এন্ডপয়েন্ট এবং নীতিগুলি কনফিগার করা দেখুন৷
লগইন পুনঃনির্দেশ
এটি হল /oauth/authorize
পথ। সংযুক্ত নীতি ব্যবহারকারীকে একটি লগইন অ্যাপে পুনঃনির্দেশিত করার জন্য দায়ী, যেখানে শেষ ব্যবহারকারী ক্লায়েন্ট অ্যাপে তাদের ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রকাশ না করে তাদের সুরক্ষিত সংস্থানগুলি অ্যাক্সেস করার জন্য ক্লায়েন্ট অ্যাপটিকে নিরাপদে প্রমাণীকরণ এবং অনুমোদন করতে পারে। আপনি এটি একটি পরিষেবা কলআউট নীতি, JavaScript, Node.js, বা অন্যান্য উপায়ে সম্পন্ন করতে পারেন৷
অনুরোধটি করার জন্য API কলটি একটি GET এবং এর জন্য ক্যোয়ারী প্যারামিটার ক্লায়েন্ট_আইডি, প্রতিক্রিয়া_প্রকার, পুনঃনির্দেশ_উরি, সুযোগ এবং রাজ্যের প্রয়োজন।
$ curl http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code&redirect_uri={redirect_uri}&scope=scope1%20scope2&state={some_string}
প্রমাণীকরণ কোড পান
এটি হল /oauth/authorizationcode
পাথ। এটি নির্দিষ্ট করা GenerateAuthorizationCode অপারেশন সহ OAuthV2 নীতি ব্যবহার করে।
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GetAuthCode"> <DisplayName>GetAuthCode</DisplayName> <Operation>GenerateAuthorizationCode</Operation> <ExpiresIn>600000</ExpiresIn> <GenerateResponse/> </OAuthV2>
অনুমোদন কোড প্রাপ্ত করার জন্য API কলটি হল একটি GET এবং এর জন্য ক্যোয়ারী প্যারামিটার ক্লায়েন্ট_আইডি, প্রতিক্রিয়া_টাইপ এবং ঐচ্ছিকভাবে সুযোগ এবং রাজ্য প্রয়োজন, যেমন এই উদাহরণে দেখানো হয়েছে:
$curl http://myorg-test.apigee.net/oauth/authorizationcode?client_id={consumer_key}&response_type=code&scope=scope1%20scope2&state={some_string}
অ্যাক্সেস টোকেন পান
এই নীতিটি /oauth/accesstoken
পাথের সাথে সংযুক্ত। এটি নির্দিষ্ট করা GenerateAccessCode অপারেশন সহ OAuthV2 নীতি ব্যবহার করে। এই ক্ষেত্রে, grant_type প্যারামিটারটি একটি ক্যোয়ারী প্যারাম হিসাবে প্রত্যাশিত:
<OAuthV2 name="GetAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>360000000</ExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
অ্যাক্সেস কোড পাওয়ার জন্য API কলটি একটি POST এবং এতে অবশ্যই ক্লায়েন্ট_আইডি, ক্লায়েন্ট_সিক্রেট, গ্রান্ট_টাইপ=অথরাইজেশন_কোড এবং ঐচ্ছিকভাবে সুযোগ অন্তর্ভুক্ত থাকতে হবে। যেমন:
$ curl https://{org_name}-test.apigee.net/oauth/accesstoken?grant_type=authorization_code -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'
এটি শুধুমাত্র একটি মৌলিক সারাংশ। একটি প্রোডাকশন উদাহরণে ইউআরএল তৈরি করা, রূপান্তর করা এবং অন্যান্য কাজ সম্পাদনের জন্য অন্যান্য অনেক নীতি অন্তর্ভুক্ত রয়েছে। একটি সম্পূর্ণ, কার্যকরী প্রকল্পের জন্য GitHub-এর নমুনা পড়ুন।
যাচাই অ্যাক্সেস টোকেন নীতি সংযুক্ত করা হচ্ছে
একটি সুরক্ষিত এপিআই অ্যাক্সেস করে এমন যেকোনো প্রবাহের শুরুতে একটি VerifyAccessToken নীতি (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
এছাড়াও একটি অ্যাক্সেস টোকেন পাঠানো দেখুন।