यह 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 के मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में अतिरिक्त
पाबंदियां लागू होती हैं. जैसे, अल्फ़ान्यूमेरिक वर्णों के अलावा अन्य वर्णों को अपने-आप हटाना.
ज़रूरी नहीं. मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में, नीति को किसी दूसरे नाम से लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
| continueOnError |
किसी नीति के काम न करने पर गड़बड़ी दिखाने के लिए, इसे false पर सेट करें. ज़्यादातर नीतियों के लिए, यह सामान्य
व्यवहार है.
किसी नीति के काम न करने पर भी, फ़्लो के एक्ज़ीक्यूशन को जारी रखने के लिए, इसे |
गलत | वैकल्पिक |
| enabled |
नीति को लागू करने के लिए, इसे true पर सेट करें.
नीति को "बंद" करने के लिए, इसे |
सही | वैकल्पिक |
| 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. |
|
|
डिप्लॉयमेंट की दूसरी संभावित गड़बड़ियां. |
गड़बड़ी के वैरिएबल
रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
| वैरिएबल | कहां | उदाहरण |
|---|---|---|
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>