Edge for Private Cloud v. 4.16.09
এই ডকুমেন্ট থেকে জানা যায় যে কীভাবে ব্যবহারকারীর আইডি, অ্যাপ আইডি বা দুটির মাধ্যমেই 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 ভূমিকায় থাকতে হবে। {curly braces}-এর ভ্যালু আপনার সংস্থার নির্দিষ্ট ভ্যালু দিয়ে পরিবর্তন করুন:
> curl -H "Content-type:text/xml" -X POST \ https://<ms-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 {userEmail}:{mypassword}
ধাপ ২: সংস্থায় opsadmin ভূমিকার জন্য অনুমতি সেট করুন
কোনও সংস্থার শুধুমাত্র orgadmin এবং opsadmin ভূমিকাকে ব্যবহারকারী আইডি বা অ্যাপ আইডির ভিত্তিতে OAuth 2.0 টোকেন ফিরিয়ে আনা (HTTP GET) এবং তুলে নেওয়ার (HTTP PUT) অনুমতি দেওয়া উচিত। অ্যাক্সেস নিয়ন্ত্রণ করতে, কোনও সংস্থার জন্য /oauth2 রিসোর্সে get এবং put অনুমতি সেট করুন। এই রিসোর্সের URL এই ফর্ম্যাটে থাকে:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2orgadmin ভূমিকায় আগে থেকেই প্রয়োজনীয় অনুমতি থাকতে হবে। /oauth2 রিসোর্সের জন্য opsadmin ভূমিকার ক্ষেত্রে, অনুমতিগুলি এইরকম দেখতে হবে:
<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>/oauth2 রিসোর্সের জন্য কোন কোন ভূমিকার অনুমতি আছে তা দেখতে আপনি সিঙ্গেল রিসোর্স API-এর জন্য অনুমতি পান কল ব্যবহার করতে পারেন।
উত্তরের উপর ভিত্তি করে, আপনি রিসোর্সের জন্য কোনও ভূমিকায় অনুমতি যোগ করুন এবং রিসোর্সের জন্য অনুমতি মুছুন API কল ব্যবহার করে /oauth2 রিসোর্স অনুমতিতে প্রয়োজনীয় অ্যাডজাস্টমেন্ট করতে পারবেন।
/oauth2 রিসোর্সের জন্য opsadmin ভূমিকাকে get এবং put অনুমতি দিতে নিম্নলিখিত cURL কমান্ড ব্যবহার করুন। {curly braces}-এ থাকা ভ্যালুগুলি আপনার সংস্থার নির্দিষ্ট ভ্যালু দিয়ে পরিবর্তন করুন:
> curl -X POST -H 'Content-type:application/xml' \ http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
orgadmin এবং opsadmin ছাড়া অন্যান্য ভূমিকা থেকে /oauth2 রিসোর্সের জন্য get এবং put অনুমতি প্রত্যাহার করতে নিম্নলিখিত cURL কমান্ড ব্যবহার করুন। {curly braces}-এর ভ্যালু আপনার সংস্থার নির্দিষ্ট ভ্যালু দিয়ে পরিবর্তন করুন:
> curl -X DELETE -H 'Content-type:application/xml' \ http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions></Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
ধাপ ৩: oauth_max_search_limit প্রপার্টি সেট করুন
/<inst_dir>/apigee/customer/application/management-server.properties ফাইলে conf_keymanagement_oauth_max_search_limit প্রপার্টি ১০০-তে সেট করা আছে কিনা তা নিশ্চিত করুন:
conf_keymanagement_oauth_max_search_limit = 100
এই ফাইলটি না থাকলে, এটি তৈরি করুন।
টোকেন ফেচ করার সময় এই প্রপার্টি পৃষ্ঠার সাইজ সেট করে। Apigee ১০০ ভ্যালু সেট করার সাজেশন দেয়, তবে আপনি নিজের সুবিধা মতো এটি সেট করতে পারেন।
নতুন ইনস্টলেশনের ক্ষেত্রে, প্রপার্টি আগে থেকেই ১০০-তে সেট করা থাকতে হবে। আপনাকে এই প্রপার্টির ভ্যালু পরিবর্তন করতে হলে, এই কমান্ড ব্যবহার করে ম্যানেজমেন্ট সার্ভার ও মেসেজ প্রসেসর রিস্টার্ট করুন:
> /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-management-server restart > /<inst_rt>/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
- ব্যবহারকারীর আইডি প্রদান করে ফ্লো ভেরিয়েবল ব্যবহার করুন