आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
हैश पर आधारित मैसेज ऑथेंटिकेशन कोड (HMAC) की गिनती करता है और उसकी पुष्टि करता है. कभी-कभी इसे कीड मैसेज ऑथेंटिकेशन कोड या कीड हैश के नाम से जाना जाता है. एचएमएसी एक क्रिप्टोग्राफ़िक हैश का इस्तेमाल करता है SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 या MD-5 जैसे फ़ंक्शन, किसी "मैसेज" पर लागू होते हैं, और साथ में सुरक्षा कुंजी भी हो सकती है. का इस्तेमाल करें. "मैसेज" शब्द यहां जाएं का मतलब बाइट की किसी भी स्ट्रीम से है. मैसेज भेजने वाला, पाने वाले को एचएमएसी भी भेज सकता है. और मैसेज को प्रमाणित करने के लिए वह एचएमएसी का इस्तेमाल कर सकता है.
एचएमएसी के बारे में ज़्यादा जानने के लिए, HMAC: कीड-हैशिंग देखें के लिए, Message Authentication (rfc2104) के लिए.
सैंपल
एचएमएसी जनरेट करें
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
एचएमएसी की पुष्टि करें
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- VerificationValue is optional. Include it to perform an HMAC check. --> <VerificationValue encoding='base16' ref='expected_hmac_value'/> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
किसी हस्ताक्षर की गणना और उस हस्ताक्षर की पुष्टि एक ही है प्रोसेस. एचएमएसी नीति, एचएमएसी का हिसाब लगाती है. साथ ही, विकल्प के तौर पर यह एचएमएसी की पुष्टि कर सकती है हस्ताक्षर का इस्तेमाल किया जाता है. पुष्टि करने के लिए वैकल्पिक वैल्यू एलिमेंट (अगर मौजूद हो) वैल्यू के आधार पर, वैल्यू.
एचएमएसी के लिए एलिमेंट रेफ़रंस
नीति के रेफ़रंस में, एचएमएसी नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
ऐसे एट्रिब्यूट जो टॉप-लेवल एलिमेंट पर लागू करें
<HMAC name="HMAC" continueOnError="false" enabled="true" async="false">
ये एट्रिब्यूट, नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं.
एट्रिब्यूट | जानकारी | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
नाम |
नीति का अंदरूनी नाम. नाम में इस्तेमाल किए जा सकने वाले वर्ण इन तक सीमित हैं:
A-Z0-9._\-$ % . हालांकि, Apigee यूज़र इंटरफ़ेस (यूआई) की ओर से
पाबंदियां, जैसे कि अक्षर और अंक के अलावा किसी और वर्ण को अपने-आप हटाना.
विकल्प के तौर पर, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है
व्यवहार की जानकारी देने वाला डेटा.
नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
चालू किया गया |
नीति को लागू करने के लिए, true पर सेट करें.
|
सही | वैकल्पिक |
एक साथ काम नहीं करने वाली प्रोसेस | यह एट्रिब्यूट अब काम नहीं करता. | गलत | बहिष्कृत |
<Algorithm>
<Algorithm>algorithm-name</Algorithm>
एचएमएसी का हिसाब लगाने के लिए हैश एल्गोरिदम तय करता है.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | ज़रूरी है |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | SHA-1 , SHA-224 , SHA-256 , SHA-384 ,
SHA-512 , और MD-5
इस नीति के कॉन्फ़िगरेशन में, केस में अंतर किए बिना एल्गोरिदम के नाम स्वीकार किए जाते हैं.
अक्षरों और संख्याओं के बीच में डैश के साथ या इसके बिना डैश लगाएं . उदाहरण के लिए, |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Apigee यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में नीति को लेबल करने के लिए, नाम एट्रिब्यूट के अलावा इसका इस्तेमाल करें पर क्लिक करें.
डिफ़ॉल्ट | अगर इस एलिमेंट को छोड़ा जाता है, तो नीति के नाम वाले एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है. |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
<Message>
<Message>message_template_here</Message> or <Message ref='variable_here'/>
साइन करने के लिए मैसेज पेलोड के बारे में बताता है. इस एलिमेंट का इनपुट, मैसेज के टेंप्लेट (वैरिएबल प्रतिस्थापन) रनटाइम के दौरान अतिरिक्त आइटम शामिल करने की अनुमति देने के लिए, जैसे कि टाइमस्टैंप, नॉन्स, हेडर या अन्य जानकारी. उदाहरण के लिए:
<Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message>
मैसेज टेंप्लेट में, तय किए गए और वैरिएबल वाले हिस्से शामिल हो सकते हैं. इनमें नई लाइनें और स्टैटिक फ़ंक्शन शामिल हैं. व्हाइटस्पेस अहम है.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | ज़रूरी है |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | टेक्स्ट वैल्यू के लिए कोई भी स्ट्रिंग मान्य होती है. अगर ref एट्रिब्यूट दिया जाता है, तो
तो उसे टेक्स्ट वैल्यू के मुकाबले प्राथमिकता दी जाएगी. यह नीति, टेक्स्ट का आकलन करती है
वैल्यू या रेफ़र किए गए वैरिएबल को मैसेज टेंप्लेट के तौर पर सेट करें. |
<Output>
<Output encoding='encoding_name'>variable_name</Output>
उस वैरिएबल का नाम बताता है जिसे नीति को कंप्यूट किए गए एचएमएसी वैल्यू के साथ सेट करना चाहिए. आउटपुट में इस्तेमाल करने के लिए, कोड में बदलने का तरीका भी तय करता है.
डिफ़ॉल्ट |
डिफ़ॉल्ट आउटपुट वैरिएबल |
मौजूदगी | ज़रूरी नहीं. अगर यह एलिमेंट मौजूद नहीं है, तो नीति फ़्लो वैरिएबल सेट करती है
hmac.POLICYNAME.output , जिसमें base64 कोड में बदली गई वैल्यू है. |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | कोड में बदलने के लिए, वैल्यू, केस-इनसेंसिटिव होती हैं;
|
<SecretKey>
<SecretKey encoding='encoding_name' ref='private.secretkey'/>
एचएमएसी को कंप्यूट करने के लिए इस्तेमाल की जाने वाली सीक्रेट कुंजी के बारे में बताता है. कुंजी को रेफ़र किए गए रेफ़रंस से लिया गया है वैरिएबल को खास एन्कोडिंग के मुताबिक डिकोड किया जाता है.
डिफ़ॉल्ट |
रेफ़र किए गए वैरिएबल के लिए कोई डिफ़ॉल्ट वैल्यू नहीं है;
|
मौजूदगी | ज़रूरी है |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू |
कोड में बदलने के तरीके की विशेषता का इस्तेमाल करके, आप ऐसी कुंजी तय कर सकते हैं जो इसमें वे बाइट शामिल हैं जो प्रिंट किए जा सकने वाले UTF-8 वर्णों की सीमा से बाहर होते हैं. उदाहरण के लिए, मान लें कि नीति के कॉन्फ़िगरेशन में यह शामिल है: <SecretKey encoding='hex' ref='private.encodedsecretkey'/>
और मान लें कि
इस मामले में, की बाइट इस तरह डिकोड की जाएंगी: [53 65 63 72 65 74 31 32 33]
(हर बाइट को हेक्स में दिखाया जाता है). एक अन्य उदाहरण के तौर पर, अगर |
<VerificationValue>
<VerificationValue encoding='encoding_name' ref='variable_name'/> or <VerificationValue encoding='encoding_name'>string_value</VerificationValue>
(वैकल्पिक) यह सत्यापन वैल्यू के साथ-साथ कोड में बदलने के एल्गोरिदम को दिखाता है, जो इसका इस्तेमाल पुष्टि की वैल्यू को कोड में बदलने के लिए किया जाता है. यह नीति, वैल्यू को डिकोड करने के लिए, इस एल्गोरिदम का इस्तेमाल करेगी.
डिफ़ॉल्ट | कोई डिफ़ॉल्ट पुष्टि मान नहीं है. अगर एलिमेंट मौजूद है, लेकिन
encoding एट्रिब्यूट मौजूद नहीं है. यह नीति, base64 को कोड में बदलने के डिफ़ॉल्ट तरीके का इस्तेमाल करती है |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू |
कोड में बदलने के तरीके के एट्रिब्यूट के लिए मान्य वैल्यू ये हैं:
|
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
अगर आपको यह तय करना है कि किसी रेफ़र किए गए वैरिएबल के बताए जाने पर, नीति गड़बड़ी की सूचना दे, तो false
पर सेट करें
हल नहीं किया जा सकता. किसी ऐसे वैरिएबल को खाली स्ट्रिंग के तौर पर ट्रीट करने के लिए true
पर सेट करें जिसे रिज़ॉल्व नहीं किया जा सकता
(शून्य).
ignoreUnsolvedVariables बूलियन सिर्फ़ उन वैरिएबल पर असर डालता है जो
मैसेज टेंप्लेट के तौर पर चला जाता है. हालांकि, SecretKey
और VerificationValue
किसी वैरिएबल का रेफ़रंस दे सकते हैं, दोनों
उनमें से जिन्हें रिज़ॉल्व किया जा सकता हो, इसलिए ignore
सेटिंग उन पर लागू नहीं होती.
डिफ़ॉल्ट | गलत |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | बूलियन |
मान्य वैल्यू | सही या गलत |
फ़्लो वैरिएबल
एक्ज़ीक्यूशन के दौरान, नीति इन वैरिएबल को सेट कर सकती है.
वैरिएबल | ब्यौरा | उदाहरण |
---|---|---|
hmac.policy_name.message |
नीति इस वैरिएबल को असरदार मैसेज के साथ सेट करती है,
Message में तय किए गए मैसेज टेंप्लेट के आकलन का नतीजा
एलिमेंट. |
hmac.HMAC-Policy.message = "Hello, World" |
hmac.policy_name.output |
इसका नतीजा मिलता है
एचएमएसी कंप्यूटेशन, जब Output एलिमेंट ऐसा करता है
वैरिएबल नाम दर्ज न करें. |
hmac.HMAC-Policy.output = /yyRjydfP+fBHTwXFgc5AZhLAg2kwCri+e35girrGw4= |
hmac.policy_name.outputencoding |
आउटपुट एन्कोडिंग का नाम लेता है. | hmac.HMAC-Policy.outputencoding = base64 |
गड़बड़ी का रेफ़रंस
इस सेक्शन में, गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इस नीति से किसी गड़बड़ी को ट्रिगर करने पर Apigee की ओर से सेट किए गए, गड़बड़ी के वैरिएबल के बारे में बताया गया है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | कब होता है |
---|---|---|
steps.hmac.UnresolvedVariable |
401 | यह गड़बड़ी तब होती है, जब एचएमएसी नीति में बताया गया कोई वैरिएबल:
|
steps.hmac.HmacVerificationFailed |
401 | एचएमएसी पुष्टि नहीं हो सकी; पुष्टि करने के लिए दिया गया मान, दिए गए मान से मेल नहीं खाता है. |
steps.hmac.HmacCalculationFailed |
401 | नीति एचएमएसी की गिनती नहीं कर सकी. |
steps.hmac.EmptySecretKey |
401 | सीक्रेट कुंजी वैरिएबल की वैल्यू खाली है. |
steps.hmac.EmptyVerificationValue |
401 | पुष्टि करने की वैल्यू रखने वाला वैरिएबल खाली है. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | एचटीटीपी कोड स्थिति | कब होता है |
---|---|---|
steps.hmac.MissingConfigurationElement |
401 | यह गड़बड़ी तब होती है, जब कोई ज़रूरी एलिमेंट या एट्रिब्यूट मौजूद नहीं होता. |
steps.hmac.InvalidValueForElement |
401 | यह गड़बड़ी तब होती है, जब एल्गोरिदम एलिमेंट में दी गई वैल्यू, इनमें से कोई वैल्यू न हो: SHA-1 , SHA-224 , SHA-256 , SHA-512 या MD-5 . |
steps.hmac.InvalidSecretInConfig |
401 | यह गड़बड़ी तब दिखती है, जब SecretKey के लिए साफ़ तौर पर टेक्स्ट वैल्यू दी गई हो. |
steps.hmac.InvalidVariableName |
401 | यह गड़बड़ी तब होती है, जब SecretKey वैरिएबल में
private प्रीफ़िक्स (private. ) न हो. |
गड़बड़ी के वैरिएबल
रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, देखें आपके लिए ज़रूरी जानकारी नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
वैरिएबल | कहां | उदाहरण |
---|---|---|
fault.name="fault_name" |
fault_name गड़बड़ी का नाम है, जैसा कि रनटाइम की गड़बड़ियों की टेबल ऊपर दी गई है. गड़बड़ी का नाम आखिरी है का हिस्सा है. | fault.name Matches "UnresolvedVariable" |
hmac.policy_name.failed |
अगर कोई गड़बड़ी होती है, तो नीति इस वैरिएबल को सेट करती है. | hmac.HMAC-Policy.failed = true |
गड़बड़ी के रिस्पॉन्स का उदाहरण
गड़बड़ी ठीक करने के लिए, सबसे सही तरीका यह है कि गड़बड़ी के errorcode
वाले हिस्से को छिपाया जाए
जवाब. faultstring
में मौजूद टेक्स्ट पर पूरी तरह भरोसा न करें, क्योंकि इससे बदलाव हो सकता है.
गड़बड़ी के नियम का उदाहरण
<FaultRules> <FaultRule name="HMAC Policy Errors"> <Step> <Name>AM-Unauthorized</Name> <Condition>(fault.name Matches "HmacVerificationFailed")</Condition> </Step> <Condition>hmac.HMAC-1.failed = true</Condition> </FaultRule> </FaultRules>