এই ডকুমেন্টে বর্ণনা করা হয়েছে যে কীভাবে শেষ ব্যবহারকারীর আইডি, অ্যাপ আইডি বা দু'টিই ব্যবহার করে OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ করা ও তুলে নেওয়া যায়।
OAuth অ্যাক্সেস টোকেনে অ্যাপ আইডি অটোমেটিক যোগ করা হয়। তাই, কোনও সংস্থার জন্য টোকেন অ্যাক্সেস চালু করতে, নিচে উল্লেখ করা প্রক্রিয়াটি ব্যবহার করার পরে, আপনি অ্যাপ আইডি দিয়ে টোকেন অ্যাক্সেস করতে পারবেন।
গ্রাহকের আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন ফিরিয়ে আনতে ও তুলে নিতে, অ্যাক্সেস টোকেনে গ্রাহকের আইডি থাকতে হবে। নিচে দেওয়া পদ্ধতি থেকে আপনি জানতে পারবেন যে কীভাবে আগে থেকে থাকা টোকেনে বা নতুন টোকেনে এন্ড-ইউজার আইডি যোগ করতে হয়।
ডিফল্ট হিসেবে, Edge যখন OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করে, তখন টোকেনটি এই ফর্ম্যাটে থাকে:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
নিম্নলিখিত বিষয়গুলি মনে রাখবেন:
application_nameফিল্ডে টোকেনের সাথে যুক্ত অ্যাপের UUID থাকে। আপনি যদি অ্যাপ আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ করা ও তুলে নেওয়া চালু করেন, তাহলে এটি হল সেই অ্যাপ আইডি যা আপনি ব্যবহার করেন।access_tokenফিল্ডে OAuth 2.0 অ্যাক্সেস টোকেনের ভ্যালু থাকে।
শেষ ব্যবহারকারীর আইডি দিয়ে OAuth 2.0 অ্যাক্সেস টোকেন ফিরিয়ে আনা ও প্রত্যাহার করার সুবিধা চালু করতে, নিচে বর্ণিত পদ্ধতি অনুযায়ী টোকেনে ব্যবহারকারীর আইডি অন্তর্ভুক্ত করার জন্য OAuth 2.0 নীতি কনফিগার করুন।
ডেভেলপার আইডি হিসেবে Edge যে স্ট্রিং ব্যবহার করে সেটি হল এন্ড-ইউজার আইডি, এটি ডেভেলপারের ইমেল আইডি নয়। Get Developer API কল ব্যবহার করে আপনি ডেভেলপার ইমেল আইডি থেকে ডেভেলপার আইডি নির্ধারণ করতে পারবেন।
টোকেনে গ্রাহকের আইডি যোগ করার জন্য Edge কনফিগার করার পরে, এটি app_enduser ফিল্ড হিসেবে যোগ করা হয়, যেমন নিচে দেখানো হয়েছে:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
ব্যবহারকারীর আইডি ও অ্যাপ আইডি অনুযায়ী OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ ও প্রত্যাহার করার API
ব্যবহারকারীর আইডি, অ্যাপ আইডি বা দু'টিই ব্যবহার করে OAuth টোকেন অ্যাক্সেস করতে, নিম্নলিখিত API ব্যবহার করুন:
- গ্রাহকের আইডি বা অ্যাপ আইডির মাধ্যমে OAuth 2.0 অ্যাক্সেস টোকেন পান
- OAuth 2.0 প্রত্যাহার করুন গ্রাহকের আইডি বা অ্যাপ আইডি দ্বারা অ্যাক্সেস টোকেন
টোকেন অ্যাক্সেস চালু করার পদ্ধতি
শেষ ব্যবহারকারীর আইডি ও অ্যাপ আইডির মাধ্যমে OAuth 2.0 অ্যাক্সেস টোকেন ফিরিয়ে আনা ও বাতিল করার সুবিধা চালু করতে নিচের পদ্ধতি অনুসরণ করুন।
ধাপ ১: কোনও সংস্থার জন্য টোকেন অ্যাক্সেস সহায়তা চালু করা
আপনাকে প্রতিটি সংস্থার জন্য আলাদাভাবে টোকেন অ্যাক্সেস চালু করতে হবে। আপনি যে প্রতিটি সংস্থায় এন্ড-ইউজার আইডি বা অ্যাপ আইডির মাধ্যমে OAuth 2.0 অ্যাক্সেস টোকেন রিট্রিভ ও প্রত্যাহার করার সুবিধা চালু করতে চান, সেটির জন্য নিচে দেওয়া PUT API-তে কল করুন।
যে ব্যবহারকারী নিম্নলিখিত কল করছেন তাকে অবশ্যই সংস্থার orgadmin বা
opsadmin হতে হবে। values-এর জায়গায় আপনার প্রতিষ্ঠানের নির্দিষ্ট
ভ্যালু লিখুন:
curl -H "Content-type:text/xml" -X POST \
https://management_server_IP;:8080/v1/organizations/org_name \
-d '<Organization name="org_name">
<Properties>
<Property name="features.isOAuthRevokeEnabled">true</Property>
<Property name="features.isOAuth2TokenSearchEnabled">true</Property>
</Properties>
</Organization>' \
-u USER_EMAIL:PASSWORDধাপ ২: প্রতিষ্ঠানে opsadmin রোলের জন্য অনুমতি সেট করা
কোনও সংস্থার শুধুমাত্র orgadmin ও opsadmin ভূমিকার
ব্যক্তিদেরই ব্যবহারকারীর আইডি বা অ্যাপ আইডির উপর ভিত্তি করে OAuth 2.0 টোকেন
রিট্রিভ (HTTP GET) ও প্রত্যাহার (HTTP PUT) করার অনুমতি দেওয়া উচিত। অ্যাক্সেস কন্ট্রোল করতে, কোনও
সংস্থার জন্য /oauth2 রিসোর্সে 'গেট' ও 'পুট' অনুমতি সেট করুন। সেই রিসোর্সের URL এই ফর্ম্যাটে আছে:
https://management_server_IP:8080/v1/organizations/org_name/oauth2
orgadmin রোলে আগে থেকেই প্রয়োজনীয় অনুমতি থাকতে হবে। /oauth2 রিসোর্সের জন্য
opsadmin ভূমিকার ক্ষেত্রে, অনুমতিগুলি এই
রকম হওয়া উচিত:
<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>সিঙ্গেল রিসোর্সের জন্য অনুমতি পান
API কল ব্যবহার করে আপনি দেখতে পারেন যে কোন কোন রোলের কাছে
/oauth2 রিসোর্সের অনুমতি আছে।
উত্তরের ভিত্তিতে, /oauth2 সম্পদের অনুমতির ক্ষেত্রে প্রয়োজনীয় কোনও পরিবর্তন করতে, আপনি কোনও রোলের জন্য রিসোর্সে অনুমতি যোগ করুন এবং রিসোর্সের জন্য অনুমতি মুছুন API কল ব্যবহার করতে পারবেন।
/oauth2 রিসোর্সের জন্য opsadmin ভূমিকা
get ও put অনুমতি দিতে, নিম্নলিখিত curl কমান্ড ব্যবহার করুন। values-এর জায়গায় আপনার প্রতিষ্ঠানের নির্দিষ্ট ভ্যালু বসান:
curl -X POST -H 'Content-type:application/xml' \
http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \
-d '<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>' \
-u USEREMAIL:PASSWORD
orgadmin এবং opsadmin ছাড়া অন্য কোনও ভূমিকা থেকে /oauth2 রিসোর্সের জন্য get এবং put
অনুমতি প্রত্যাহার করতে নিম্নলিখিত curl কমান্ড ব্যবহার করুন।
values-এর জায়গায় আপনার
সংস্থা-নির্দিষ্ট ভ্যালু লিখুন:
curl -X DELETE -H 'Content-type:application/xml' \
http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \
-d '<ResourcePermission path="/oauth2">
<Permissions></Permissions>
</ResourcePermission>' \
-u USEREMAIL:PASSWORD
ধাপ ৩: oauth_max_search_limit প্রপার্টি সেট করুন
/opt/apigee/customer/application/management-server.properties
ফাইলের conf_keymanagement_oauth_max_search_limit
প্রপার্টি ১০০-তে সেট করা আছে কিনা দেখুন:
conf_keymanagement_oauth_max_search_limit = 100
এই ফাইলটি না থাকলে, এটি তৈরি করুন।
টোকেন আনার সময় এই প্রপার্টি পৃষ্ঠার সাইজ সেট করে। Apigee ১০০ মান সাজেস্ট করে, তবে আপনি নিজের প্রয়োজন মতো মান সেট করতে পারেন।
নতুন ইনস্টলেশনে, প্রপার্টি আগে থেকেই ১০০ হিসেবে সেট করা থাকবে। আপনাকে এই প্রপার্টির ভ্যালু পরিবর্তন করতে হলে, Management Server ও Message Processor রিস্টার্ট করতে এইসব কমান্ড ব্যবহার করুন:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restartধাপ ৪: OAuth 2.0 নীতি কনফিগার করুন যা ব্যবহারকারীর আইডি অন্তর্ভুক্ত করার জন্য টোকেন তৈরি করে
টোকেনে ব্যবহারকারীর আইডি অন্তর্ভুক্ত করতে অ্যাক্সেস টোকেন তৈরি করার জন্য ব্যবহৃত OAuth 2.0 নীতি কনফিগার করুন। অ্যাক্সেস টোকেনে এন্ড-ইউজার আইডি যোগ করার মাধ্যমে, আপনি আইডি দিয়ে টোকেন রিট্রিভ ও প্রত্যাহার করতে পারবেন।
অ্যাক্সেস টোকেনে ব্যবহারকারীর আইডি অন্তর্ভুক্ত করার জন্য নীতি কনফিগার করতে, যে অনুরোধ অ্যাক্সেস টোকেন তৈরি করে সেটিতে ব্যবহারকারীর আইডি অন্তর্ভুক্ত থাকতে হবে এবং আপনাকে অবশ্যই ইনপুট ভেরিয়েবল নির্দিষ্ট করতে হবে যাতে ব্যবহারকারীর আইডি থাকে।
নিচে GenerateAccessTokenClient নামের OAuth 2.0 নীতি, OAuth 2.0 অ্যাক্সেস
টোকেন তৈরি করে। <AppEndUser> বোল্ড হরফে লেখা ট্যাগটি লক্ষ্য করুন যা ব্যবহারকারীর আইডি থাকা ভেরিয়েবলকে
নির্দিষ্ট করে:
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient"> <DisplayName>OAuth 2.0.0 1</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>GenerateAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <GrantType>request.queryparam.grant_type</GrantType> <AppEndUser>request.header.appuserID</AppEndUser> <ExpiresIn>960000</ExpiresIn> </OAuthV2>
তারপরে, OAuth 2.0 অ্যাক্সেস
টোকেন তৈরি করতে, আপনি নিম্নলিখিত curl কমান্ড ব্যবহার করতে পারেন, appuserID হেডার হিসেবে ব্যবহারকারীর আইডি পাস করুন:
curl -H "appuserID:6ZG094fgnjNf02EK" \ https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \ -X POST -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'
এই উদাহরণে, appuserID-কে অনুরোধ হেডার হিসেবে পাস করা হয়েছে। আপনি বিভিন্ন উপায়ে অনুরোধের অংশ হিসেবে
তথ্য পাস করতে পারেন। যেমন, বিকল্প হিসেবে আপনি:
- ফর্ম প্যারামিটার ভেরিয়েবল ব্যবহার করুন:
request.formparam.appuserID - ফ্লো ভেরিয়েবল ব্যবহার করে এন্ড-ইউজারের আইডি প্রদান করুন