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

आपको 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 (सही मान के साथ)

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

इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि जब यह नीति किसी गड़बड़ी को ट्रिगर करती है, तो Edge किन गड़बड़ी वाले वैरिएबल सेट करता है. इस जानकारी के बारे में जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बना रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपको क्या जानना चाहिए और गड़बड़ियों को ठीक करने के बारे में लेख पढ़ें.

रनटाइम से जुड़ी गड़बड़ियां

नीति लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह ठीक करें
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>

स्कीमा

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

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