মৌলিক প্রমাণীকরণ নীতি

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

কি

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

নীতিটি আপনাকে একটি বেস64 এনকোড করা স্ট্রিং-এ সংরক্ষিত শংসাপত্রগুলিকে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডে ডিকোড করতে দেয়৷

ভিডিও: এই ভিডিওটি দেখায় কিভাবে বেসিক প্রমাণীকরণ নীতি ব্যবহার করে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড বেস64-এনকোড করতে হয়।

ভিডিও: এই ভিডিওটি দেখায় কিভাবে বেসিক প্রমাণীকরণ নীতি ব্যবহার করে একটি base64-এনকোডেড ব্যবহারকারীর নাম এবং পাসওয়ার্ড ডিকোড করতে হয়।

নমুনা

আউটবাউন্ড এনকোডিং

<BasicAuthentication name="ApplyBasicAuthHeader">
   <DisplayName>ApplyBasicAuthHeader</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="BasicAuth.credentials.username" />
   <Password ref="BasicAuth.credentials.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

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

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

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

বেস64 এনকোডিং এর পূর্বে <User> এবং <Password> মানগুলি একটি কোলন দিয়ে সংযুক্ত করা হয়।

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

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

আপনার <User> এবং <Password> উপাদানগুলির জন্য কী/মান স্টোর থেকে মানগুলি বের করতে সক্ষম হওয়ার জন্য প্রাথমিক প্রমাণীকরণ নীতির আগে নিম্নলিখিত KeyValueMapOperations নীতিগুলি সংযুক্ত করুন এবং তাদের ভেরিয়েবল 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>

এই নীতির নমুনায়, নীতিটি Authorization HTTP শিরোনাম থেকে ব্যবহারকারীর নাম এবং পাসওয়ার্ড ডিকোড করে, যেমনটি <উৎস> উপাদান দ্বারা নির্দিষ্ট করা হয়েছে। বেস 64 এনকোড করা স্ট্রিংটি অবশ্যই Basic Base64EncodedString.

নীতি অনুরোধ. header.username ভেরিয়েবলে ডিকোড করা ব্যবহারকারীর নাম এবং request.header.password ভেরিয়েবলে ডিকোড করা পাসওয়ার্ড লিখে।


মৌলিক প্রমাণীকরণ নীতি সম্পর্কে

নীতির অপারেশনের দুটি মোড রয়েছে:

  • এনকোড : Base64 ভেরিয়েবলে সংরক্ষিত একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড এনকোড করে
  • ডিকোড : একটি Base64 এনকোড করা স্ট্রিং থেকে ব্যবহারকারীর নাম এবং পাসওয়ার্ড ডিকোড করে

ব্যবহারকারীর নাম এবং পাসওয়ার্ড সাধারণত কী/মান স্টোরে সংরক্ষণ করা হয় এবং তারপর রানটাইমে কী/মান স্টোর থেকে পড়া হয়। কী/মান স্টোর ব্যবহার করার বিষয়ে বিস্তারিত জানার জন্য, কী ভ্যালু ম্যাপ অপারেশন নীতি দেখুন।

উপাদান রেফারেন্স

উপাদান রেফারেন্স মৌলিক প্রমাণীকরণ নীতির উপাদান এবং বৈশিষ্ট্য বর্ণনা করে।

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
   <DisplayName>Basic Authentication 1</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="request.queryparam.username" />
   <Password ref="request.queryparam.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

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

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

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

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

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

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

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

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

সত্য ঐচ্ছিক
async

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

মিথ্যা অবচয়

<DisplayName> উপাদান

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

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

N/A

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

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

<অপারেশন> উপাদান

নীতি বেস64 শংসাপত্রগুলি এনকোড বা ডিকোড করে কিনা তা নির্ধারণ করে৷

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

স্ট্রিং

বৈধ মান অন্তর্ভুক্ত:

  • এনকোড
  • ডিকোড

<অমীমাংসিত ভেরিয়েবল> এলিমেন্টকে উপেক্ষা করুন

true সেট করা হলে, যদি একটি পরিবর্তনশীল সমাধান করা না যায় তবে নীতিটি একটি ত্রুটি নিক্ষেপ করবে না৷ একটি মৌলিক প্রমাণীকরণ নীতির প্রেক্ষাপটে ব্যবহার করা হলে, এই সেটিংটি সাধারণত false সেট করা হয় কারণ নির্দিষ্ট ভেরিয়েবলগুলিতে ব্যবহারকারীর নাম বা পাসওয়ার্ড পাওয়া না গেলে এটি একটি ত্রুটি নিক্ষেপ করা সাধারণত উপকারী।

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

বুলিয়ান

<ব্যবহারকারী> উপাদান

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

N/A

গুণাবলী

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

যে ভেরিয়েবল থেকে নীতিটি গতিশীলভাবে ব্যবহারকারীর নাম (এনকোড) পড়ে বা ব্যবহারকারীর নাম (ডিকোড) লিখে।

N/A প্রয়োজন

<পাসওয়ার্ড> উপাদান

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

N/A

গুণাবলী

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

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

N/A প্রয়োজন

<AssignTo> উপাদান

এই নীতি দ্বারা উত্পন্ন এনকোড করা বা ডিকোড করা মান সহ সেট করার লক্ষ্য পরিবর্তনশীল নির্দিষ্ট করে৷

নিম্নলিখিত উদাহরণটি নির্দেশ করে যে নীতিটি বার্তাটির Authorization শিরোনামকে জেনারেট করা মানতে সেট করতে হবে:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
ডিফল্ট: N/A
উপস্থিতি: প্রয়োজন
প্রকার:

স্ট্রিং

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
নতুন তৈরি করুন ভেরিয়েবলটি ইতিমধ্যে সেট করা থাকলে নীতিটি ভেরিয়েবলটিকে ওভাররাইট করবে কিনা তা নির্ধারণ করে৷

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

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

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

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

<উৎস> উপাদান

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

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

N/A

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

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

  • BasicAuthentication.{policy_name}.failed (সত্যের মান সহ)

ত্রুটি উল্লেখ

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

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.basicauthentication.InvalidBasicAuthenticationSource 500 একটি ডিকোডে যখন ইনকামিং Base64 এনকোড করা স্ট্রিং একটি বৈধ মান ধারণ করে না বা হেডারটি বিকৃত হয় (যেমন, "বেসিক" দিয়ে শুরু হয় না)।
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>

স্কিমাস

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

মূল মান মানচিত্র অপারেশন নীতি