Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
यह क्या है
यह, JWS पर सिग्नेचर की पुष्टि किए बिना, JWS हेडर को डिकोड करता है. साथ ही, हर हेडर को फ़्लो वैरिएबल में लिखता है. यह नीति सबसे ज़्यादा तब काम आती है, जब इसे VerifyJWS नीति के साथ इस्तेमाल किया जाता है. ऐसा तब होता है, जब JWS के सिग्नेचर की पुष्टि करने से पहले, JWS के हेडर की वैल्यू जाननी ज़रूरी हो.
JWS में अटैच किया गया पेलोड हो सकता है, जैसा कि इस फ़ॉर्म में है:
header.payload.signature
इसके अलावा, JWS से मिलने वाले पेलोड को छोड़ा जा सकता है. इसे detached पेलोड कहा जाता है और यह इस तरह से हो सकता है:
header..signature
DecodeJWS नीति दोनों फ़ॉर्म के साथ काम करती है, क्योंकि यह सिर्फ़ JWS के हेडर वाले हिस्से को ही डिकोड करती है. DecodeJWS नीति JWS को साइन करने के लिए इस्तेमाल किए गए एल्गोरिदम पर ध्यान दिए बिना भी काम करती है.
ज़्यादा जानकारी और JWS के फ़ॉर्मैट की खास जानकारी के लिए, JWS और JWT की नीतियों की खास जानकारी देखें.
वीडियो
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
खाली है.
इस नीति के ज़रिए सेट किए गए वैरिएबल की पूरी सूची के लिए फ़्लो वैरिएबल देखें.
JWS को डिकोड करने के लिए एलिमेंट का रेफ़रंस
नीति का रेफ़रंस, Decode JWS नीति के एलिमेंट और एट्रिब्यूट के बारे में बताता है.
टॉप-लेवल एलिमेंट पर लागू होने वाले एट्रिब्यूट
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
ये एट्रिब्यूट, नीति के सभी पैरंट एलिमेंट के लिए एक जैसे होते हैं.
एट्रिब्यूट | Description | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
नाम |
नीति का अंदरूनी नाम. नाम में इस्तेमाल किए जाने वाले वर्ण, इन तक सीमित हैं:
A-Z0-9._\-$ % . हालांकि, Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) अतिरिक्त पाबंदियां लागू करता है. जैसे, उन वर्णों को अपने-आप हटाना जो अक्षर और अंक नहीं हैं.
इसके अलावा, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को आम भाषा में अलग नाम से लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
इस नीति को false पर सेट करें, ताकि नीति के काम न करने पर गड़बड़ी का मैसेज दिखे. ज़्यादातर नीतियों में, ऐसा आम तौर पर किया जाता है.
किसी नीति के काम न करने पर भी फ़्लो एक्ज़ीक्यूट करने की प्रोसेस को जारी रखने के लिए, |
false | ज़रूरी नहीं |
चालू किया गया |
नीति लागू करने के लिए, true पर सेट करें.
नीति को "बंद" करने के लिए, |
सही | ज़रूरी नहीं |
async | यह एट्रिब्यूट अब काम नहीं करता. | false | बहिष्कृत |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को एक अलग, आम भाषा के नाम से लेबल करने के लिए, नाम एट्रिब्यूट के साथ-साथ इसका इस्तेमाल करें.
डिफ़ॉल्ट | अगर इस एलिमेंट को छोड़ दिया जाता है, तो नीति के नाम वाले एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है. |
मौजूदगी | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | String |
<सोर्स>
<Source>JWS-variable</Source>
अगर यह वैल्यू मौजूद होती है, तो उस फ़्लो वैरिएबल के बारे में बताता है जिसमें नीति को, JWS को डिकोड करने के लिए ढूंढना है.
डिफ़ॉल्ट | request.header.authorization (डिफ़ॉल्ट के बारे में अहम जानकारी पाने के लिए,
ऊपर दिया गया नोट देखें). |
मौजूदगी | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | String |
मान्य वैल्यू | Edge फ़्लो वैरिएबल का नाम |
फ़्लो वैरिएबल
सफलता मिलने पर, JWS की पुष्टि करें और 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 वगैरह. ज़्यादा जानकारी के लिए, (एल्गोरिदम) हेडर पैरामीटर देखें. |
header.kid |
कुंजी आईडी, अगर JWS जनरेट करते समय जोड़ा गया था. JWS की पुष्टि करने के लिए, JWT और JWS की नीतियों की खास जानकारी पर जाकर, "JSON वेब पासकोड सेट (JWKS)" इस्तेमाल करें. ज़्यादा जानकारी के लिए (कुंजी आईडी) हेडर पैरामीटर देखें. |
header.type |
हेडर टाइप की वैल्यू. ज़्यादा जानकारी के लिए (टाइप) हेडर पैरामीटर देखें. |
header.name |
नाम वाले हेडर की वैल्यू (स्टैंडर्ड या अतिरिक्त). इनमें से एक वैल्यू को JWS के हेडर वाले हर अतिरिक्त हेडर के लिए सेट किया जाएगा. |
header-json |
JSON फ़ॉर्मैट में हेडर. |
payload |
अगर JWS में अटैच किया गया पेलोड है, तो JWS पेलोड. डिटैच किए गए पेलोड के लिए, यह वैरिएबल खाली है. |
valid |
VerificationJWS के मामले में, सिग्नेचर की पुष्टि होने पर यह वैरिएबल 'सही' होगा. साथ ही, अगर मौजूदा समय टोकन की समयसीमा खत्म होने से पहले का होगा, तो मौजूदा समय, तब सही होगा, जब टोकन की वैल्यू पहले मौजूद हो. नहीं तो गलत है.
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>