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

क्या
इस कुकी की मदद से, लास्ट-माइल सिक्योरिटी के लिए सामान्य पुष्टि का इस्तेमाल किया जा सकता है. यह नीति, उपयोगकर्ता नाम और पासवर्ड लेती है. इसके बाद, उन्हें Base64 में एन्कोड करती है और नतीजे के तौर पर मिली वैल्यू को किसी वैरिएबल में लिखती है. इससे मिलने वाली वैल्यू, Basic
Base64EncodedString
के फ़ॉर्मैट में होती है. आम तौर पर, इस वैल्यू को एचटीटीपी हेडर में लिखा जाता है. जैसे, Authorization हेडर.
इस नीति की मदद से, Base64 एन्कोड की गई स्ट्रिंग में सेव किए गए क्रेडेंशियल को उपयोगकर्ता नाम और पासवर्ड में डिकोड किया जा सकता है.
वीडियो: इस वीडियो में, बुनियादी पुष्टि करने की नीति का इस्तेमाल करके, उपयोगकर्ता नाम और पासवर्ड को base64-कोड में बदलने का तरीका बताया गया है.
वीडियो: इस वीडियो में, बुनियादी पुष्टि करने की नीति का इस्तेमाल करके, 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
एट्रिब्यूट से मिले वैरिएबल से लिया गया है. इस नीति को लागू करने से पहले, वैरिएबल सेट किए जाने चाहिए. आम तौर पर, वैरिएबल में ऐसी वैल्यू भरी जाती हैं जिन्हें कुंजी/वैल्यू मैप से पढ़ा जाता है. Key Value Map
Operations की नीति देखें.
इस कॉन्फ़िगरेशन से, Authorization नाम का एचटीटीपी हेडर मिलता है. इसे <AssignTo> एलिमेंट के ज़रिए तय किया जाता है. इसे बैकएंड सर्वर को भेजे गए आउटबाउंड अनुरोध मैसेज में जोड़ा जाता है:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Base64 एन्कोडिंग से पहले, <User>
और <Password>
वैल्यू को कोलन के साथ जोड़ा जाता है.
मान लें कि आपके पास एक कुंजी/वैल्यू मैप है, जिसमें यह एंट्री है:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
KeyValueMapOperations की इन नीतियों को BasicAuthentication नीति से पहले अटैच करें, ताकि कुंजी/वैल्यू स्टोर से <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
एचटीटीपी हेडर से उपयोगकर्ता नाम और पासवर्ड को डिकोड करती है. Base64 कोड में बदली गई स्ट्रिंग, इस फ़ॉर्मैट में होनी चाहिए Basic Base64EncodedString.
यह नीति, डिकोड किए गए उपयोगकर्ता नाम को request.header.username वैरिएबल में लिखती है. साथ ही, डिकोड किए गए पासवर्ड को request.header.password वैरिएबल में लिखती है.
बुनियादी पुष्टि करने की नीति के बारे में जानकारी
इस नीति के तहत, दो मोड में काम किया जाता है:
- Encode: यह फ़ंक्शन, वैरिएबल में सेव किए गए उपयोगकर्ता नाम और पासवर्ड को Base64 में बदलता है
- डिकोड करना: Base64 एन्कोड की गई स्ट्रिंग से उपयोगकर्ता नाम और पासवर्ड को डिकोड करता है
उपयोगकर्ता नाम और पासवर्ड को आम तौर पर, कुंजी/वैल्यू स्टोर में सेव किया जाता है. इसके बाद, रनटाइम में कुंजी/वैल्यू स्टोर से इन्हें पढ़ा जाता है. कुंजी/वैल्यू स्टोर का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Key Value Map Operations policy देखें.
एलिमेंट का रेफ़रंस
इस एलिमेंट रेफ़रंस में, 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>
<BasicAuthentication> एट्रिब्यूट
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
name |
नीति का अंदरूनी नाम. इसके अलावा, नीति को लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
enabled |
नीति को लागू करने के लिए, नीति को बंद करने के लिए, |
सही | वैकल्पिक |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
इस कॉलम में नीति को लेबल करने के लिए, name
एट्रिब्यूट के साथ-साथ इस्तेमाल करें
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की |
---|---|
मौजूदगी | वैकल्पिक |
टाइप | स्ट्रिंग |
<Operation> एलिमेंट
इससे यह तय होता है कि नीति, क्रेडेंशियल को Base64 कोड में बदलती है या उसे डिकोड करती है.
<Operation>Encode</Operation>
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | ज़रूरी है |
टाइप: |
स्ट्रिंग. मान्य वैल्यू में ये शामिल हैं:
|
<IgnoreUnresolvedVariables> एलिमेंट
true
पर सेट होने पर, अगर किसी वैरिएबल को हल नहीं किया जा सकता, तो नीति कोई गड़बड़ी नहीं दिखाएगी. BasicAuthentication नीति के संदर्भ में इस्तेमाल किए जाने पर, इस सेटिंग को आम तौर पर false
पर सेट किया जाता है. ऐसा इसलिए, क्योंकि अगर बताए गए वैरिएबल में उपयोगकर्ता नाम या पासवर्ड नहीं मिलता है, तो गड़बड़ी दिखाना आम तौर पर फ़ायदेमंद होता है.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
डिफ़ॉल्ट: | सही |
मौजूदगी: | वैकल्पिक |
टाइप: |
बूलियन |
<User> एलिमेंट
- एन्कोडिंग के लिए,
<User>
एलिमेंट का इस्तेमाल करके उस वैरिएबल के बारे में बताएं जिसमें उपयोगकर्ता नाम मौजूद है. Base64 एन्कोडिंग से पहले, उपयोगकर्ता नाम और पासवर्ड की वैल्यू को कोलन के साथ जोड़ा जाता है. - डिकोड करने के लिए, वह वैरिएबल डालें जिसमें डिकोड किया गया उपयोगकर्ता नाम लिखा गया है.
<User ref="request.queryparam.username" />
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | ज़रूरी है |
टाइप: |
लागू नहीं |
विशेषताएं
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
ref |
यह वह वैरिएबल है जिससे नीति, उपयोगकर्ता नाम को डाइनैमिक तरीके से पढ़ती है (कोड में बदलती है) या उपयोगकर्ता नाम को लिखती है (कोड से बदलती है). |
लागू नहीं | ज़रूरी है |
<Password> एलिमेंट
- एन्कोडिंग के लिए,
<Password>
एलिमेंट का इस्तेमाल करके, पासवर्ड वाला वैरिएबल तय करें. - डिकोड करने के लिए, उस वैरिएबल के बारे में बताएं जिसमें डिकोड किया गया पासवर्ड लिखा गया है.
<Password ref="request.queryparam.password" />
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | ज़रूरी है |
टाइप: |
लागू नहीं |
विशेषताएं
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
ref |
यह वह वैरिएबल है जिससे नीति, पासवर्ड को डाइनैमिक तरीके से पढ़ती है (कोड में बदलती है) या पासवर्ड लिखती है (कोड से बदलती है). |
लागू नहीं | ज़रूरी है |
<AssignTo> एलिमेंट
Encode
ऑपरेशन के लिए, यह नीति टारगेट वैरिएबल तय करती है. इस वैरिएबल को इस नीति से जनरेट की गई कोड में बदली गई वैल्यू के साथ सेट किया जाता है.
यहां दिए गए उदाहरण से पता चलता है कि नीति को, मैसेज के Authorization
हेडर को जनरेट की गई वैल्यू पर सेट करना चाहिए:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | Encode ऑपरेशन के लिए ज़रूरी है. |
टाइप: |
स्ट्रिंग |
विशेषताएं
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
createNew | इससे यह तय होता है कि अगर वैरिएबल पहले से सेट है, तो क्या नीति को वैरिएबल को ओवरराइट करना चाहिए.
जब "false" होता है, तो वैरिएबल को असाइनमेंट सिर्फ़ तब होता है, जब वैरिएबल फ़िलहाल सेट न हो (शून्य). "सही है" होने पर, वैरिएबल को हमेशा असाइनमेंट मिलता है. आम तौर पर, इस एट्रिब्यूट को "false" (डिफ़ॉल्ट) पर सेट किया जाता है. |
गलत | वैकल्पिक |
<Source> एलिमेंट
डिकोड करने के लिए, Base64 एन्कोड की गई स्ट्रिंग वाला वैरिएबल, Basic
Base64EncodedString
के फ़ॉर्म में. उदाहरण के लिए, Authorization हेडर के लिए, request.header.Authorization
तय करें.
<Source>request.header.Authorization</Source>
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | डिकोड करने की कार्रवाई के लिए ज़रूरी है. |
टाइप: |
लागू नहीं |
फ़्लो वैरिएबल
नीति के लागू न होने पर, यह फ़्लो वैरिएबल सेट किया जाता है:
BasicAuthentication.{policy_name}.failed
(जिसकी वैल्यू सही है)
गड़बड़ी की जानकारी
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह | ठीक करें |
---|---|---|---|
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>