আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
এটি আপনাকে শেষ ধাপের নিরাপত্তার জন্য হালকা বেসিক অথেনটিকেশন ব্যবহার করতে সক্ষম করে। এই পলিসিটি একটি ইউজারনেম এবং পাসওয়ার্ড গ্রহণ করে, সেগুলোকে Base64 এনকোড করে এবং প্রাপ্ত মানটি একটি ভেরিয়েবলে লিখে রাখে। প্রাপ্ত মানটি Basic Base64EncodedString আকারে থাকে। সাধারণত এই মানটি কোনো HTTP হেডারে, যেমন Authorization হেডারে, লেখা হয়।
এই পলিসিটি আপনাকে Base64 এনকোডেড স্ট্রিং-এ সংরক্ষিত ক্রেডেনশিয়ালগুলিকে ডিকোড করে একটি ইউজারনেম এবং পাসওয়ার্ডে রূপান্তর করার সুযোগও দেয়।
ভিডিও: এই ভিডিওতে দেখানো হয়েছে কিভাবে বেসিক অথেন্টিকেশন পলিসি ব্যবহার করে ইউজারনেম এবং পাসওয়ার্ডকে বেস৬৪-এনকোড করতে হয়।
ভিডিও: এই ভিডিওতে দেখানো হয়েছে কিভাবে বেসিক অথেন্টিকেশন পলিসি ব্যবহার করে একটি বেস৬৪-এনকোডেড ইউজারনেম এবং পাসওয়ার্ড ডিকোড করতে হয়।
নমুনা
বহির্গামী এনকোডিং
<BasicAuthentication name="ApplyBasicAuthHeader"> <DisplayName>ApplyBasicAuthHeader</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="credentials.username" /> <Password ref="credentials.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> </BasicAuthentication>
উপরের নমুনা পলিসি কনফিগারেশনে, এনকোড করার জন্য ইউজারনেম এবং পাসওয়ার্ড <User> এবং <Password> এলিমেন্টের ref অ্যাট্রিবিউট দ্বারা নির্দিষ্ট ভ্যারিয়েবলগুলো থেকে নেওয়া হয়। এই পলিসি কার্যকর হওয়ার আগে ভ্যারিয়েবলগুলো অবশ্যই সেট করতে হবে। সাধারণত, একটি কী/ভ্যালু ম্যাপ থেকে পড়া ভ্যালু দিয়ে ভ্যারিয়েবলগুলো পূরণ করা হয়। কী ভ্যালু ম্যাপ অপারেশনস পলিসি দেখুন।
এই কনফিগারেশনের ফলে, <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট Authorization নামের HTTP হেডারটি ব্যাকএন্ড সার্ভারে পাঠানো আউটবাউন্ড রিকোয়েস্ট মেসেজে যুক্ত হয়:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Base64 এনকোডিং করার আগে <User> এবং <Password> ভ্যালু দুটিকে একটি কোলন দিয়ে যুক্ত করা হয়।
ধরে নিন আপনার কাছে একটি কী/ভ্যালু ম্যাপ আছে, যেখানে নিম্নলিখিত এন্ট্রিটি রয়েছে:
{
"encrypted" : true,
"entry" : [ {
"name" : "username",
"value" : "MyUsername"
}, {
"name" : "password",
"value" : "MyPassword"
} ],
"name" : "BasicAuthCredentials"
}
আপনার <User> এবং <Password> এলিমেন্টগুলোর জন্য কী/ভ্যালু স্টোর থেকে ভ্যালু এক্সট্র্যাক্ট করতে এবং সেগুলোকে credentials.username ও credentials.password ভ্যারিয়েবলগুলোতে পপুলেট করতে, BasicAuthentication পলিসির আগে নিম্নলিখিত KeyValueMapOperations পলিসিগুলো সংযুক্ত করুন।
<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials"> <Scope>apiproxy</Scope> <Get assignTo="credentials.username" index='1'> <Key> <Parameter>username</Parameter> </Key> </Get> <Get assignTo="credentials.password" index='1'> <Key> <Parameter>password</Parameter> </Key> </Get> </KeyValueMapOperations>
ইনবাউন্ড ডিকোডিং
<BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username" /> <Password ref="request.header.password" /> <Source>request.header.Authorization</Source> </BasicAuthentication>
এই পলিসি স্যাম্পলটিতে, <Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা Authorization HTTP হেডার থেকে ইউজারনেম এবং পাসওয়ার্ড ডিকোড করা হয়। Base64 এনকোডেড স্ট্রিংটি অবশ্যই Basic Base64EncodedString.
এই পলিসিটি ডিকোড করা ইউজারনেমটি request.header.username ভেরিয়েবলে এবং ডিকোড করা পাসওয়ার্ডটি request.header.password ভেরিয়েবলে লিখে রাখে।
বেসিক অথেন্টিকেশন নীতি সম্পর্কে
এই পলিসিটির দুটি কার্যপ্রণালী রয়েছে:
- এনকোড : ভেরিয়েবলে সংরক্ষিত ইউজারনেম এবং পাসওয়ার্ডকে Base64 এনকোড করে।
- ডিকোড : একটি Base64 এনকোডেড স্ট্রিং থেকে ইউজারনেম এবং পাসওয়ার্ড ডিকোড করে।
ইউজারনেম এবং পাসওয়ার্ড সাধারণত কী/ভ্যালু স্টোরে সংরক্ষণ করা হয় এবং রানটাইমে সেখান থেকে পড়া হয়। কী/ভ্যালু স্টোর ব্যবহারের বিস্তারিত জানতে, কী ভ্যালু ম্যাপ অপারেশনস পলিসি দেখুন।
উপাদান রেফারেন্স
এলিমেন্ট রেফারেন্সটি BasicAuthentication পলিসির উপাদান এবং অ্যাট্রিবিউটগুলো বর্ণনা করে।
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1"> <DisplayName>Basic Authentication 1</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="credentials.username" /> <Password ref="credentials.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> <Source>request.header.Authorization</Source> </BasicAuthentication>
<বেসিকঅথেনটিকেশন> অ্যাট্রিবিউট
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<অপারেশন> উপাদান
পলিসিটি ক্রেডেনশিয়ালগুলিকে Base64 এনকোড করবে নাকি ডিকোড করবে, তা নির্ধারণ করে।
<Operation>Encode</Operation>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | দড়ি। বৈধ মানগুলির মধ্যে রয়েছে:
|
<IgnoreUnresolvedVariables> উপাদান
যখন এটি true তে সেট করা হয়, তখন কোনো ভেরিয়েবল খুঁজে না পাওয়া গেলেও পলিসিটি কোনো এরর দেখাবে না। যখন এটি একটি BasicAuthentication পলিসির ক্ষেত্রে ব্যবহৃত হয়, তখন এই সেটিংটি সাধারণত false এ সেট করা হয়, কারণ নির্দিষ্ট ভেরিয়েবলগুলোর মধ্যে ইউজারনেম বা পাসওয়ার্ড খুঁজে না পেলে একটি এরর দেখানোই সাধারণত সুবিধাজনক।
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
| ডিফল্ট: | সত্য |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | বুলিয়ান |
<ব্যবহারকারী> উপাদান
- এনকোডিংয়ের জন্য, ইউজারনেম ধারণকারী ভেরিয়েবলটি নির্দিষ্ট করতে
<User>এলিমেন্টটি ব্যবহার করুন। Base64 এনকোডিংয়ের আগে ইউজারনেম এবং পাসওয়ার্ড ভ্যালু দুটিকে একটি কোলন দিয়ে যুক্ত করা হয়। - ডিকোড করার জন্য, সেই ভেরিয়েবলটি নির্দিষ্ট করুন যেখানে ডিকোড করা ইউজারনেমটি লেখা আছে।
<User ref="credentials.username" />
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | যে ভেরিয়েবল থেকে পলিসিটি ডায়নামিকভাবে ইউজারনেম পড়ে (এনকোড) অথবা ইউজারনেম লেখে (ডিকোড)। | প্রযোজ্য নয় | প্রয়োজনীয় |
<পাসওয়ার্ড> উপাদান
- এনকোড করার জন্য, পাসওয়ার্ড ধারণকারী ভেরিয়েবলটি নির্দিষ্ট করতে
<Password>এলিমেন্টটি ব্যবহার করুন। - ডিকোড করার জন্য, সেই ভেরিয়েবলটি নির্দিষ্ট করুন যেখানে ডিকোড করা পাসওয়ার্ডটি লেখা হবে।
<Password ref="credentials.password" />
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | যে ভেরিয়েবল থেকে পলিসিটি ডায়নামিকভাবে পাসওয়ার্ড পড়ে (এনকোড) অথবা পাসওয়ার্ড লেখে (ডিকোড)। | প্রযোজ্য নয় | প্রয়োজনীয় |
<AssignTo> উপাদান
Encode অপারেশনের জন্য, এই পলিসি দ্বারা তৈরি এনকোড করা মান দিয়ে সেট করার জন্য টার্গেট ভেরিয়েবল নির্দিষ্ট করা হয়।
নিম্নলিখিত উদাহরণটি নির্দেশ করে যে, পলিসিটি মেসেজের Authorization হেডারকে জেনারেট করা ভ্যালুটিতে সেট করবে:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | Encode অপারেশনের জন্য আবশ্যক। |
| প্রকার: | স্ট্রিং |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নতুন তৈরি করুন | ভেরিয়েবলটি আগে থেকে সেট করা থাকলে, পলিসিটি সেটিকে ওভাররাইট করবে কিনা তা নির্ধারণ করে। 'false' হলে, ভেরিয়েবলে অ্যাসাইনমেন্ট তখনই ঘটে যখন ভেরিয়েবলটি বর্তমানে আনসেট (null) থাকে। 'true' হলে, ভেরিয়েবলে অ্যাসাইনমেন্ট সর্বদা ঘটে। আপনি সাধারণত এই অ্যাট্রিবিউটটি 'false' (ডিফল্ট) সেট করেন। | মিথ্যা | ঐচ্ছিক |
<উৎস> উপাদান
ডিকোডিংয়ের জন্য, Base64 এনকোডেড স্ট্রিং ধারণকারী ভেরিয়েবলটি Basic Base64EncodedString আকারে প্রয়োজন হয়। উদাহরণস্বরূপ, Authorization হেডারের সাথে সঙ্গতিপূর্ণ request.header.Authorization উল্লেখ করুন।
<Source>request.header.Authorization</Source>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ডিকোড অপারেশনের জন্য আবশ্যক। |
| প্রকার: | প্রযোজ্য নয় |
প্রবাহ পরিবর্তনশীল
পলিসি ব্যর্থ হলে নিম্নলিখিত ফ্লো ভেরিয়েবলটি সেট করা হয়:
-
BasicAuthentication.{policy_name}.failed(যার মান true)
ত্রুটির রেফারেন্স
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা তা জানার জন্য এই তথ্যটি গুরুত্বপূর্ণ৷ আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource | 500 | একটি ডিকোডে যখন ইনকামিং Base64 এনকোড করা স্ট্রিং একটি বৈধ মান ধারণ করে না বা হেডারটি বিকৃত হয় (যেমন, "বেসিক" দিয়ে শুরু হয় না)। | build |
steps.basicauthentication.UnresolvedVariable | 500 | ডিকোড বা এনকোডের জন্য প্রয়োজনীয় উৎস ভেরিয়েবল উপস্থিত নেই। IgnoreUnresolvedVariables মিথ্যা হলেই এই ত্রুটি ঘটতে পারে। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | যখন ঘটে | ঠিক করুন |
|---|---|---|
UserNameRequired | নামকৃত অপারেশনের জন্য <User> উপাদানটি অবশ্যই উপস্থিত থাকতে হবে। | build |
PasswordRequired | নামকৃত অপারেশনের জন্য <Password> উপাদানটি অবশ্যই উপস্থিত থাকতে হবে। | build |
AssignToRequired | নামকৃত অপারেশনের জন্য <AssignTo> উপাদানটি অবশ্যই উপস্থিত থাকতে হবে। | build |
SourceRequired | নামকৃত অপারেশনের জন্য <Source> উপাদানটি অবশ্যই উপস্থিত থাকতে হবে। | build |
ফল্ট ভেরিয়েবল
রানটাইম ত্রুটি ঘটলে এই ভেরিয়েবলগুলি সেট করা হয়। আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
| ভেরিয়েবল | যেখানে | উদাহরণ |
|---|---|---|
fault.name=" fault_name " | fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। | fault.name Matches "UnresolvedVariable" |
BasicAuthentication. policy_name .failed | policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। | BasicAuthentication.BA-Authenticate.failed = true |
উদাহরণ ত্রুটি প্রতিক্রিয়া
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
উদাহরণ দোষ নিয়ম
<FaultRule name="Basic Authentication Faults">
<Step>
<Name>AM-UnresolvedVariable</Name>
<Condition>(fault.name Matches "UnresolvedVariable") </Condition>
</Step>
<Step>
<Name>AM-AuthFailedResponse</Name>
<Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
</Step>
<Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>