DecodeJWS नीति

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X दस्तावेज़.
info

क्या

यह नीति, JWS पर हस्ताक्षर की पुष्टि किए बिना, JWS के हेडर को डिकोड करती है. साथ ही, हर हेडर को फ़्लो वैरिएबल में लिखती है. यह नीति, VerifyJWS नीति के साथ इस्तेमाल करने पर सबसे ज़्यादा काम की होती है. ऐसा तब होता है, जब JWS के हस्ताक्षर की पुष्टि करने से पहले, JWS में मौजूद किसी हेडर की वैल्यू पता करनी हो.

किसी JWS में अटैच पेलोड हो सकता है. जैसे:

header.payload.signature

इसके अलावा, JWS में पेलोड शामिल नहीं किया जा सकता. इसे डिटैच पेलोड कहा जाता है. यह इस फ़ॉर्मैट में हो सकता है:

header..signature

DecodeJWS नीति, इन दोनों फ़ॉर्मैट के साथ काम करती है, क्योंकि यह सिर्फ़ JWS के हेडर वाले हिस्से को डिकोड करती है. DecodeJWS नीति, JWS पर हस्ताक्षर करने के लिए इस्तेमाल किए गए एल्गोरिदम के बावजूद काम करती है.

ज़्यादा जानकारी के लिए, JWS और JWT नीतियों की खास जानकारी देखें. इसमें JWS के फ़ॉर्मैट की खास जानकारी और उसके बारे में पूरी जानकारी दी गई है .

वीडियो

JWT को डिकोड करने का तरीका जानने के लिए, यह छोटा वीडियो देखें. हालांकि, यह वीडियो सिर्फ़ JWT के लिए है , लेकिन इसमें बताए गए कई कॉन्सेप्ट, JWS के लिए भी लागू होते हैं.

सैंपल: JWS को डिकोड करना

यहां दिखाई गई नीति, var.JWS फ़्लो वैरिएबल में मौजूद JWS को डिकोड करती है. यह वैरिएबल मौजूद होना चाहिए और इसमें मान्य (डिकोड किया जा सकने वाला) JWS होना चाहिए. यह नीति, किसी भी फ़्लो वैरिएबल से JWS हासिल कर सकती है.

<DecodeJWS name="JWS-Decode-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Source>var.JWS</Source>
</DecodeJWS>

JWS के हेडर वाले हिस्से में मौजूद हर हेडर के लिए, नीति एक फ़्लो वैरिएबल सेट करती है. इसका नाम यह होता है:

jws.policy-name.header.header-name

अगर JWS में अटैच पेलोड है, तो यह jws.policy-name.header.payload फ़्लो वैरिएबल को पेलोड पर सेट करती है. डिटैच पेलोड के लिए, payload खाली होता है. इस नीति से सेट किए गए वैरिएबल की पूरी सूची देखने के लिए, फ़्लो वैरिएबल देखें.

Decode JWS के लिए एलिमेंट रेफ़रंस

नीति के रेफ़रंस में, Decode JWS नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.

सबसे ऊपर के एलिमेंट पर लागू होने वाले एट्रिब्यूट

<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">

ये एट्रिब्यूट, सभी नीति के पैरंट एलिमेंट में मौजूद होते हैं.

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name नीति का इंटरनल नाम. नाम में इन वर्णों का इस्तेमाल किया जा सकता है: A-Z0-9._\-$ %. हालांकि, Edge के मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में अतिरिक्त पाबंदियां लागू होती हैं. जैसे, अल्फ़ान्यूमेरिक वर्णों के अलावा अन्य वर्णों को अपने-आप हटाना.

ज़रूरी नहीं. मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में, नीति को किसी दूसरे नाम से लेबल करने के लिए, <displayname></displayname> एलिमेंट का इस्तेमाल करें.

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

किसी नीति के काम न करने पर भी, फ़्लो के एक्ज़ीक्यूशन को जारी रखने के लिए, इसे true पर सेट करें.

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

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

सही वैकल्पिक
async इस एट्रिब्यूट को बंद कर दिया गया है. गलत बहिष्कृत

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में, नीति को किसी दूसरे नाम से लेबल करने के लिए, name एट्रिब्यूट के अलावा इसका इस्तेमाल करें.

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

<Source>

<Source>JWS-variable</Source>

अगर यह मौजूद है, तो यह उस फ़्लो वैरिएबल के बारे में बताता है जिसमें नीति, डिकोड करने के लिए JWS ढूंढती है.

डिफ़ॉल्ट request.header.authorization (डिफ़ॉल्ट के बारे में अहम जानकारी के लिए, ऊपर दिया गया नोट देखें).
मौजूदगी वैकल्पिक
टाइप स्ट्रिंग
मान्य वैल्यू Edge के फ़्लो वैरिएबल का नाम

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

सफलता मिलने के बाद, Verify JWS और Decode JWS की नीतियां सेट की गईं इस पैटर्न के अनुसार कॉन्टेक्स्ट वैरिएबल:

jws.{policy_name}.{variable_name}

उदाहरण के लिए, अगर नीति का नाम verify-jws है, तो नीति सेव हो जाएगी इस कॉन्टेक्स्ट वैरिएबल के लिए JWS में तय एल्गोरिदम: jws.verify-jws.header.algorithm

वैरिएबल का नाम ब्यौरा
decoded.header.name पेलोड में हेडर का JSON-पार्स करने लायक मान. इसके लिए एक वैरिएबल सेट किया गया है हर हेडर को कॉपी करता है. हालांकि, आपके पास header.name फ़्लो वैरिएबल का इस्तेमाल करने का भी विकल्प है, हेडर को ऐक्सेस करने के लिए, इस वैरिएबल का इस्तेमाल करने का सुझाव दिया जाता है.
header.algorithm JWS पर इस्तेमाल किया जाने वाला साइनिंग एल्गोरिदम. उदाहरण के लिए, RS256, HS384 वगैरह. ज़्यादा जानकारी के लिए (Algorithm) हेडर पैरामीटर देखें.
header.kid कुंजी आईडी, अगर उसे JWS जनरेट करते समय जोड़ा गया हो. "JSON वेब कुंजी सेट का इस्तेमाल करना" भी देखें (JWKS)" JWT और JWS नीतियों की खास जानकारी देखें. ज़्यादा जानकारी के लिए (Key ID) हेडर पैरामीटर देखें.
header.type हेडर टाइप की वैल्यू. ज़्यादा जानकारी के लिए (Type) हेडर पैरामीटर देखें.
header.name नाम वाले हेडर की वैल्यू (स्टैंडर्ड या अतिरिक्त). इनमें से किसी एक को के हेडर वाले हिस्से में हर अतिरिक्त हेडर को शामिल करता है.
header-json JSON फ़ॉर्मैट में हेडर.
payload अगर JWS में पेलोड अटैच है, तो JWS पेलोड. डिटैच किए गए पेलोड के लिए, यह वैरिएबल खाली होता है.
valid VerifyJWS के मामले में, हस्ताक्षर की पुष्टि होने पर यह वैरिएबल सही होगा. साथ ही, मौजूदा समय, टोकन की समयसीमा खत्म होने से पहले का है. साथ ही, टोकन notbefore वैल्यू के बाद का है, अगर वे मौजूद हैं. नहीं तो गलत.

DecodeJWS के मामले में, यह वैरिएबल सेट नहीं होता.

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

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

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

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

गड़बड़ी का कोड एचटीटीपी कोड स्थिति कब होता है
steps.jws.FailedToDecode 401 यह नीति, JWS को डिकोड नहीं कर सकी. शायद JWS में कोई गड़बड़ी है.
steps.jws.FailedToResolveVariable 401 ऐसा तब होता है, जब नीति के <Source> एलिमेंट में बताया गया फ़्लो वैरिएबल मौजूद न हो.
steps.jws.InvalidClaim 401 ऐसा दावा जो मौजूद नहीं है या दावे से मेल नहीं खाता, या हेडर या हेडर मेल नहीं खाता.
steps.jws.InvalidJsonFormat 401 JWS हेडर में अमान्य JSON मिला.
steps.jws.InvalidJws 401 यह गड़बड़ी तब होती है, जब JWS हस्ताक्षर की पुष्टि नहीं हो पाती.
steps.jws.InvalidPayload 401 JWS पेलोड अमान्य है.
steps.jws.InvalidSignature 401 <DetachedContent> को हटाया गया है और JWS में अलग कॉन्टेंट पेलोड है.
steps.jws.MissingPayload 401 JWS पेलोड मौजूद नहीं है.
steps.jws.NoAlgorithmFoundInHeader 401 ऐसा तब होता है, जब JWS इस एल्गोरिदम हेडर को छोड़ देता है.
steps.jws.UnknownException 401 एक अज्ञात अपवाद हुआ.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम कब होता है
InvalidAlgorithm सिर्फ़ ये वैल्यू मान्य हैं: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512.

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

डिप्लॉयमेंट की दूसरी संभावित गड़बड़ियां.

गड़बड़ी के वैरिएबल

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

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "TokenExpired"
JWS.failed कोई गड़बड़ी होने पर, JWS की सभी नीतियां एक ही वैरिएबल सेट करती हैं. jws.JWS-Policy.failed = true

गड़बड़ी के रिस्पॉन्स का उदाहरण

गड़बड़ी ठीक करने के लिए, सबसे सही तरीका यह है कि गड़बड़ी के errorcode वाले हिस्से को छिपाया जाए जवाब. faultstring में मौजूद टेक्स्ट पर पूरी तरह भरोसा न करें, क्योंकि इससे बदलाव हो सकता है.

गड़बड़ी के नियम का उदाहरण

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>