BasicAuthentication নীতি

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

কী

এটি আপনাকে শেষ-মাইল নিরাপত্তার জন্য লাইটওয়েট সাধারণ যাচাইকরণ ব্যবহার করতে দেয়। নীতিটি একটি ইউজারনেম ও পাসওয়ার্ড নেয়, সেগুলিকে Base64 এনকোড করে এবং ফলাফল পাওয়া ভ্যালু একটি ভেরিয়েবলে লেখে। ফলাফল Basic Base64EncodedString ফর্ম্যাটে দেখানো হয়। আপনি সাধারণত এই ভ্যালু HTTP হেডারে লেখেন, যেমন অনুমোদন হেডার।

এছাড়াও, এই নীতি আপনাকে Base64 এনকোড করা স্ট্রিংয়ে সেভ করা ক্রেডেনশিয়ালকে ইউজারনেম ও পাসওয়ার্ডে ডিকোড করতে দেয়।

ভিডিও: এই ভিডিওতে দেখানো হয়েছে কীভাবে Basic Authentication নীতি ব্যবহার করে ইউজারনেম ও পাসওয়ার্ড base64-এনকোড করতে হয়।

ভিডিও: এই ভিডিওতে দেখানো হয়েছে যে কীভাবে Basic Authentication নীতি ব্যবহার করে 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>

উপরের নমুনা নীতি কনফিগারেশনে, এনকোড করার জন্য ইউজারনেম ও পাসওয়ার্ড ref অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা ভেরিয়েবল থেকে নেওয়া হয়েছে যা <User> ও <Password> এলিমেন্টে আছে। এই নীতি প্রয়োগ করার আগে ভেরিয়েবল সেট করতে হবে। সাধারণত, ভেরিয়েবলগুলি এমন ভ্যালু দ্বারা পূরণ করা হয় যা কী/ভ্যালু ম্যাপ থেকে পড়া হয়। কী ভ্যালু ম্যাপ অপারেশন নীতি দেখুন।

এই কনফিগারেশনের ফলে Authorization নামের HTTP হেডার তৈরি হয়, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়, এবং ব্যাকএন্ড সার্ভারে পাঠানো আউটবাউন্ড অনুরোধ মেসেজে যোগ করা হয়:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

Base64 এনকোডিংয়ের আগে <User> ও <Password> ভ্যালু কোলন দিয়ে একসাথে যোগ করা হয়।

ধরে নিন যে আপনার কাছে নিম্নলিখিত এন্ট্রি সহ একটি কী/ভ্যালু ম্যাপ আছে:

{
  "encrypted" : true,
  "entry" : [ {
    "name" : "username",
    "value" : "MyUsername"
  }, {
    "name" : "password",
    "value" : "MyPassword"
  } ],
  "name" : "BasicAuthCredentials"
}
      

BasicAuthentication নীতির আগে নিম্নলিখিত KeyValueMapOperations নীতি অ্যাটাচ করুন যাতে কী/ভ্যালু স্টোর থেকে আপনার <User> এবং <Password> এলিমেন্টের ভ্যালু এক্সট্র্যাক্ট করতে এবং সেগুলি credentials.username এবং credentials.password ভেরিয়েবলে পপুলেট করতে পারেন।

<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> অ্যাট্রিবিউট

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<Operation> এলিমেন্ট

নীতিটি Base64 এনকোড বা ডিকোড করে কিনা তা নির্ধারণ করে।

<Operation>Encode</Operation>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: প্রয়োজনীয়
টাইপ:

স্ট্রিং।

সঠিক ভ্যালুর মধ্যে এগুলি অন্তর্ভুক্ত:

  • এনকোড করা
  • ডিকোড করা

<IgnoreUnresolvedVariables> এলিমেন্ট

true হিসেবে সেট করা থাকলে, কোনও ভেরিয়েবেল সমাধান করা না গেলে নীতিটি কোনও সমস্যা দেখাবে না। BasicAuthentication নীতির প্রসঙ্গে ব্যবহার করা হলে, এই সেটিং সাধারণত false হিসেবে সেট করা হয়, কারণ নির্দিষ্ট ভেরিয়েবলে কোনও ইউজারনেম বা পাসওয়ার্ড খুঁজে না পেলে একটি সমস্যা দেখানো সাধারণত ভাল।

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
ডিফল্ট: সত্য
উপস্থিতি: ঐচ্ছিক
টাইপ:

বুলিয়ান

<User> এলিমেন্ট

  • এনকোডিংয়ের জন্য, ব্যবহারকারীর নাম থাকা ভেরিয়েবল নির্দিষ্ট করতে <User> এলিমেন্ট ব্যবহার করুন। Base64 এনকোডিংয়ের আগে ইউজারনেম ও পাসওয়ার্ডের ভ্যালু কোলন দিয়ে কনক্যাটেনেট করা হয়।
  • ডিকোড করার জন্য, ডিকোড করা ইউজারনেম যেখানে লেখা আছে সেই ভেরিয়েবল নির্দিষ্ট করুন।
<User ref="credentials.username" /> 
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: প্রয়োজনীয়
টাইপ:

প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
ref

যে ভেরিয়েবল থেকে নীতিটি ডাইনামিক পদ্ধতিতে ইউজারনেম (এনকোড) পড়ে বা ইউজারনেম (ডিকোড) লেখে।

প্রযোজ্য নয় প্রয়োজনীয়

<Password> এলিমেন্ট

  • এনকোডিংয়ের জন্য, পাসওয়ার্ড থাকা ভেরিয়েবল নির্দিষ্ট করতে <Password> এলিমেন্ট ব্যবহার করুন ।
  • ডিকোড করার জন্য, ডিকোড করা পাসওয়ার্ড যেখানে লেখা আছে সেই ভেরিয়েবল নির্দিষ্ট করুন।
<Password ref="credentials.password" />
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: প্রয়োজনীয়
টাইপ:

প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
ref

যে ভেরিয়েবল থেকে নীতি ডায়নামিক পদ্ধতিতে পাসওয়ার্ড (এনকোড) পড়ে বা পাসওয়ার্ড (ডিকোড) লেখে।

প্রযোজ্য নয় প্রয়োজনীয়

<AssignTo> এলিমেন্ট

Encode অপারেশনের জন্য, এই নীতি দ্বারা তৈরি এনকোড করা ভ্যালু দিয়ে সেট করার জন্য টার্গেট ভেরিয়েবল নির্দিষ্ট করে।

নিম্নলিখিত উদাহরণ থেকে বোঝা যায় যে নীতিতে মেসেজের Authorization হেডারকে জেনারেট করা ভ্যালু হিসেবে সেট করতে হবে:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: Encode অপারেশনের জন্য প্রয়োজন।
টাইপ:

স্ট্রিং

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
createNew ভেরিয়েবেল আগে থেকেই সেট করা থাকলে, নীতিটি ভেরিয়েবেলকে ওভাররাইট করবে কিনা তা নির্ধারণ করে। সেট করা আছে।

"false" হলে, ভেরিয়েবলে অ্যাসাইনমেন্ট শুধুমাত্র তখনই হয় যদি ভেরিয়েবলটি বর্তমানে সেট না করা থাকে (নাল)।

"true" হলে, ভেরিয়েবলে অ্যাসাইনমেন্ট সবসময় ঘটে।

আপনি সাধারণত এই অ্যাট্রিবিউটকে "false" (ডিফল্ট) হিসেবে সেট করেন।

মিথ্যা ঐচ্ছিক

<Source> এলিমেন্ট

ডিকোড করার জন্য, Base64 এনকোড করা স্ট্রিং সহ ভেরিয়েবলটি Basic Base64EncodedString ফর্ম্যাটে থাকতে হবে। যেমন, অনুমোদন হেডারের সাথে সম্পর্কিত request.header.Authorization নির্দিষ্ট করুন।

<Source>request.header.Authorization</Source>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: ডিকোড অপারেশনের জন্য প্রয়োজন।
টাইপ:

প্রযোজ্য নয়

ফ্লো ভেরিয়েবল

নীতি কাজ না করলে, নিম্নলিখিত ফ্লো ভেরিয়েবল সেট করা হয়:

  • BasicAuthentication.{policy_name}.failed (যার ভ্যালু true)

সমস্যার রেফারেন্স

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

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস কারণ এর সমাধান করুন
steps.basicauthentication.InvalidBasicAuthenticationSource 500 ডিকোড করার সময়, ইনকামিং Base64 এনকোড করা স্ট্রিংয়ে সঠিক ভ্যালু না থাকলে অথবা হেডার ভুল ফর্ম্যাটে থাকলে (যেমন, "Basic" দিয়ে শুরু না হলে)।
steps.basicauthentication.UnresolvedVariable 500 ডিকোড বা এনকোড করার জন্য প্রয়োজনীয় সোর্স ভেরিয়েবল নেই। এই সমস্যাটি শুধুমাত্র IgnoreUnresolvedVariables মিথ্যা হলে তবেই হতে পারে।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম এটি তখন ঘটে যখন এর সমাধান করুন
UserNameRequired নামযুক্ত অপারেশনের জন্য <User> এলিমেন্ট অবশ্যই থাকতে হবে।
PasswordRequired নামযুক্ত অপারেশনের জন্য <Password> এলিমেন্ট অবশ্যই থাকতে হবে।
AssignToRequired নামযুক্ত অপারেশনের জন্য <AssignTo> এলিমেন্ট অবশ্যই থাকতে হবে।
SourceRequired নামযুক্ত অপারেশনের জন্য <Source> এলিমেন্ট অবশ্যই থাকতে হবে।

ফল্ট ভেরিয়েবল

রানটাইম এরর হলে এই ভেরিয়েবল সেট করা হয়। আরও তথ্যের জন্য, নীতি সংক্রান্ত সমস্যার ব্যাপারে আপনার কী জানা প্রয়োজন দেখুন।

ভেরিয়েবল কোথায় উদাহরণ
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>

স্কিমা

সম্পর্কিত বিষয়

কী ভ্যালু ম্যাপ অপারেশন নীতি