पुष्टि करने की बुनियादी नीति

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

क्या

आपको इनके लिए लाइटवेट बेसिक पुष्टि का इस्तेमाल करने की सुविधा देता है आखिरी कदम की सुरक्षा. यह नीति उपयोगकर्ता नाम और पासवर्ड लेती है, Base64 उन्हें कोड में बदल देता है, और नतीजे के तौर पर किसी वैरिएबल की वैल्यू दिखाता है. नतीजे के तौर पर मिलने वाली वैल्यू, Basic Base64EncodedString फ़ॉर्मैट में होती है. आप आमतौर पर इस मान को किसी HTTP हेडर पर लिखते हैं, जैसे अनुमति देना हेडर.

इस नीति की मदद से, Base64 कोड में बदली गई स्ट्रिंग में स्टोर किए गए क्रेडेंशियल को उपयोगकर्ता नाम में डिकोड किया जा सकता है और पासवर्ड डालें.

वीडियो: इस वीडियो में बताया गया है कि उपयोगकर्ता नाम को base64 कोड में कैसे बदला जा सकता है और पासवर्ड बनाने की सुविधा देता है.

वीडियो: इस वीडियो में बेस64 कोड में बदले उपयोगकर्ता नाम को डिकोड करने का तरीका बताया गया है. पासवर्ड बनाने की सुविधा देता है.

सैंपल

आउटबाउंड एन्कोडिंग

<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>

ऊपर दिए गए नमूना नीति कॉन्फ़िगरेशन में, कोड में बदलने के लिए उपयोगकर्ता नाम और पासवर्ड ये हैं यहां दिए गए वैरिएबल से ref एट्रिब्यूट की मदद से तय किए गए वैरिएबल के हिसाब से <User> और <Password> एलिमेंट. वैरिएबल ये होने चाहिए सेट करें. आम तौर पर, वैरिएबल को उन वैल्यू से पॉप्युलेट किया जाता है जो कुंजी/वैल्यू वाले मैप से पढ़ना चाहिए. की वैल्यू मैप देखें कार्रवाइयों से जुड़ी नीति.

इस कॉन्फ़िगरेशन का नतीजा, Authorization नाम के एचटीटीपी हेडर में होता है, जैसा कि &lt;AssignTo&gt; एलिमेंट, बैकएंड सर्वर को भेजे जाने वाले आउटबाउंड अनुरोध मैसेज में जोड़ा जा रहा है:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

<User> और <Password> वैल्यू को आपस में जोड़ा गया है कोलन से जो Base64 एन्कोडिंग से पहले हो.

मान लें कि आपके पास इस एंट्री वाला कुंजी/वैल्यू मैप है:

{
  "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>

इस नीति के नमूने में, नीति उपयोगकर्ता नाम और पासवर्ड को Authorization एचटीटीपी हेडर, जैसा कि &lt;Source&gt; एलिमेंट में बताया गया है. बेस64 कोड में बदली गई स्ट्रिंग, 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="request.queryparam.username" />
   <Password ref="request.queryparam.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
   <Source>request.header.Authorization</Source> 
</BasicAuthentication>

&lt;BasicAuthentication&gt; एट्रिब्यूट

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

यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू ये काम कर सकती है: अक्षरों, संख्याओं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुलस्टॉप को शामिल करें. यह मान नहीं हो सकता 255 वर्णों से ज़्यादा होने चाहिए.

इसके अलावा, नीति को लेबल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल करें प्रबंधन यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर को अलग, आम भाषा में इस्तेमाल करने वाले नाम के साथ किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

&lt;Operation&gt; एलिमेंट

इससे यह तय होता है कि नीति Base64, क्रेडेंशियल को एन्कोड या डीकोड करती है या नहीं.

<Operation>Encode</Operation>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप:

स्ट्रिंग.

मान्य वैल्यू में ये शामिल हैं:

  • एन्कोड
  • Decode

&lt;IgnoreUnresolvedVariables&gt; एलिमेंट

true पर सेट करने पर, अगर वैरिएबल को समाधान किया गया. सामान्य तौर पर पुष्टि करने की नीति के संदर्भ में इस्तेमाल किए जाने पर, आम तौर पर यह सेटिंग सेट की जाती है false को इसलिए बनाया गया है, क्योंकि आम तौर पर किसी उपयोगकर्ता नाम या दिए गए वैरिएबल में पासवर्ड नहीं मिला.

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
डिफ़ॉल्ट: सही
मौजूदगी: वैकल्पिक
टाइप:

बूलियन

&lt;User&gt; एलिमेंट

  • कोड में बदलने के लिए, <User> एलिमेंट का इस्तेमाल करके वैरिएबल तय करें जिसमें उपयोगकर्ता नाम शामिल हो. उपयोगकर्ता नाम और पासवर्ड की वैल्यू, इससे पहले कोलन से जोड़ी जाती हैं Base64 एन्कोडिंग.
  • डिकोड करने के लिए, वह वैरिएबल तय करें जहां डिकोड किया गया उपयोगकर्ता नाम लिखा गया है.
<User ref="request.queryparam.username" /> 
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप:

लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ

वह वैरिएबल जिससे नीति डाइनैमिक रूप से उपयोगकर्ता नाम (एन्कोड) पढ़ती है या लिखती है उपयोगकर्ता नाम (डिकोड).

लागू नहीं ज़रूरी है

&lt;Password&gt; एलिमेंट

  • कोड में बदलने के लिए, <Password> एलिमेंट का इस्तेमाल करके वैरिएबल तय करें जिसमें पासवर्ड शामिल हो.
  • डिकोड करने के लिए, वह वैरिएबल तय करें जहां डिकोड किया गया पासवर्ड लिखा गया है.
<Password ref="request.queryparam.password" />
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप:

लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ

वह वैरिएबल जिससे नीति डाइनैमिक रूप से पासवर्ड पढ़ती है (एन्कोड) या लिखती है पासवर्ड (डिकोड करना).

लागू नहीं ज़रूरी है

&lt;AssignTo&gt; एलिमेंट

इससे जनरेट की गई, कोड में बदली गई या डिकोड की गई वैल्यू के साथ सेट किया जाने वाला टारगेट वैरिएबल तय करता है की नीति देखें.

इस उदाहरण में बताया गया है कि इस नीति को Authorization को सेट करना चाहिए मैसेज का हेडर, जनरेट की गई वैल्यू पर भेजता है:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप:

स्ट्रिंग

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
createNew इससे यह तय होता है कि अगर वैरिएबल पहले से मौजूद है, तो नीति को वैरिएबल को ओवरराइट करना चाहिए या नहीं सेट.

"गलत" होने पर, वैरिएबल के लिए असाइनमेंट सिर्फ़ तब होता है, जब वैरिएबल अभी सेट नहीं है (शून्य).

"सही" होने पर, वैरिएबल को असाइन किया गया असाइनमेंट हमेशा होता है.

आम तौर पर, आप इस एट्रिब्यूट को "गलत" पर सेट करते हैं (डिफ़ॉल्ट).

गलत वैकल्पिक

&lt;Source&gt; एलिमेंट

डिकोड करने के लिए, वह वैरिएबल जिसमें Base64 कोड में बदली गई स्ट्रिंग होती है. Basic Base64EncodedString फ़ॉर्म भरें. उदाहरण के लिए, अनुमति हेडर के मुताबिक, request.header.Authorization तय करें.

<Source>request.header.Authorization</Source>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: डिकोड करने की कार्रवाई के लिए ज़रूरी है.
टाइप:

लागू नहीं

फ़्लो वैरिएबल

नीति के काम न करने पर, यहां दिया गया फ़्लो वैरिएबल सेट होता है:

  • BasicAuthentication.{policy_name}.failed (सही मान के साथ)

गड़बड़ी का रेफ़रंस

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.basicauthentication.InvalidBasicAuthenticationSource 500 On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (e.g., does not start with "Basic").
steps.basicauthentication.UnresolvedVariable 500 The required source variables for the decode or encode are not present. This error can only occur if IgnoreUnresolvedVariables is false.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when Fix
UserNameRequired The <User> element must be present for the named operation.
PasswordRequired The <Password> element must be present for the named operation.
AssignToRequired The <AssignTo> element must be present for the named operation.
SourceRequired The <Source> element must be present for the named operation.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. BasicAuthentication.BA-Authenticate.failed = true

Example error response

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.basicauthentication.UnresolvedVariable"
      },
      "faultstring":"Unresolved variable : request.queryparam.password"
   }
}

Example fault rule

<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>

स्कीमा

मिलते-जुलते विषय

की वैल्यू मैप कार्रवाइयों से जुड़ी नीति