JWS नीति की पुष्टि करें

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

यह क्या है

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

अगर JWS कोड की पुष्टि हो गई है और वह मान्य है, तो अनुरोध को आगे बढ़ने की अनुमति मिलती है. अगर JWS हस्ताक्षर की पुष्टि नहीं हो सकी या किसी तरह की गड़बड़ी होने की वजह से JWS अमान्य है, तो सभी प्रोसेसिंग रुक जाते हैं और जवाब में गड़बड़ी दिखती है.

JWS के पुर्ज़े और उन्हें एन्क्रिप्ट (सुरक्षित) करने के तरीके के बारे में जानने के लिए, RFC7515 देखें.

वीडियो

JWS पेज पर हस्ताक्षर की पुष्टि करने का तरीका जानने के लिए, यह छोटा वीडियो देखें. हालांकि, यह वीडियो JWT की पुष्टि करने के लिए है, लेकिन JWS के लिए कई कॉन्सेप्ट एक जैसे हैं.

सैंपल

HS256 एल्गोरिदम से हस्ताक्षर किए हुए JWS अटैचमेंट की पुष्टि करें

इस उदाहरण में, अटैच किए गए ऐसे JWS की पुष्टि की गई है जिस पर HS256 एन्क्रिप्शन एल्गोरिदम के साथ, SHA-256 चेकसम का इस्तेमाल करके हस्ताक्षर किया गया है. JWS प्रॉक्सी अनुरोध में JWS नाम के फ़ॉर्म पैरामीटर का इस्तेमाल करके पास किया जाता है. कुंजी, private.secretkey नाम के वैरिएबल में मौजूद होती है.

अटैच किए गए JWS में एन्कोड किया गया हेडर, पेलोड, और हस्ताक्षर शामिल है:

header.payload.signature

नीति के कॉन्फ़िगरेशन में वह जानकारी शामिल होती है जिसमें Edge को डिकोड करना और उसका आकलन करना ज़रूरी होता है. जैसे, JWS कहां ढूंढना है, <Source> एलिमेंट में दिए गए फ़्लो वैरिएबल में, ज़रूरी साइनिंग एल्गोरिदम और कहां से एज कुंजी को स्टोर किया जाता है (उदाहरण के लिए, उसे Edge KVM से वापस लाया जा सकता है).

<VerifyJWS name="JWS-Verify-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
</VerifyJWS>

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

RS256 एल्गोरिदम की मदद से, अलग किए गए JWS सर्वर की पुष्टि करें

इस उदाहरण में, अलग किए गए JWS की पुष्टि की जाएगी. इस पर RS256 एल्गोरिदम का इस्तेमाल करके हस्ताक्षर किया गया है. पुष्टि करने के लिए, आपको सार्वजनिक कुंजी देनी होगी. JWS प्रॉक्सी अनुरोध में पास किया जाता है. इसका इस्तेमाल JWS नाम के फ़ॉर्म पैरामीटर का इस्तेमाल करके किया जाता है. सार्वजनिक कुंजी, public.publickey नाम वाले वैरिएबल में शामिल होती है.

अलग किए गए JWS, JWS से पेलोड को हटा देता है:

header..signature

पेलोड को शामिल करने वाले वैरिएबल का नाम <DetachedContent> एलिमेंट में देकर, इसे तय करने का काम आप पर निर्भर करता है. जिस कॉन्टेंट में जानकारी दी गई है वह <DetachedContent> में मूल कोड में होना चाहिए. साथ ही, यह JWS हस्ताक्षर बनाते समय भी होना चाहिए.

<VerifyJWS name="JWS-Verify-RS256">
    <DisplayName>JWS Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <DetachedContent>private.payload</DetachedContent>
</VerifyJWS>

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

मुख्य एलिमेंट सेट करना

JWS की पुष्टि करने के लिए इस्तेमाल किए जाने वाले एलिमेंट, चुने गए एल्गोरिदम पर निर्भर करते हैं. इसका तरीका नीचे दी गई टेबल में दिखाया गया है:

एल्‍गोरि‍द्म खास चीज़ें
एचएस*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
जवाब*, स्पेन*, पीएस*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

या:

<PublicKey>
  <JWKS ref="jwks_val_ref_or_url"/>
</PublicKey>
*अहम शर्तों के बारे में ज़्यादा जानने के लिए, हस्ताक्षर में एन्क्रिप्शन से जुड़े एल्गोरिदम के बारे में जानकारी देखें.

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

इस नीति की मदद से, 'पुष्टि करें' विकल्प की JWS नीति से जुड़ी एलिमेंट और विशेषताओं के बारे में जानकारी मिलती है.

ध्यान दें: इस्तेमाल किए जाने वाले एन्क्रिप्शन एल्गोरिदम के आधार पर, कॉन्फ़िगरेशन कुछ अलग होगा. इस्तेमाल के कुछ खास उदाहरण देने के लिए, उदाहरण देखें.

ऐसे एट्रिब्यूट जो टॉप लेवल एलिमेंट पर लागू होते हैं

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

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

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

इसके अलावा, मैनेजमेंट एलिमेंट के प्रॉक्सी एडिटर में नीति को लेबल करने के लिए, <displayname></displayname> एलिमेंट का इस्तेमाल किया जा सकता है. इसके लिए, किसी दूसरी भाषा का इस्तेमाल करें.

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

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

गलत ज़रूरी नहीं
चालू किया गया नीति लागू करने के लिए, true पर सेट करें.

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

सही ज़रूरी नहीं
एक साथ काम नहीं करने वाली प्रोसेस इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है. गलत बहिष्कृत

<डिसप्ले नाम>

<DisplayName>Policy Display Name</DisplayName>

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

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

<एल्गोरिदम>

<Algorithm>HS256</Algorithm>

टोकन पर हस्ताक्षर करने के लिए एन्क्रिप्शन एल्गोरिदम के बारे में बताता है. RS*/PS*/ES* एल्गोरिदम, सार्वजनिक/सीक्रेट की कुंजी का जोड़ा इस्तेमाल करते हैं, जबकि HS* एल्गोरिदम एक शेयर किया गया सीक्रेट लागू करते हैं. हस्ताक्षर को एन्क्रिप्ट करने के एल्गोरिदम के बारे में जानकारी भी देखें.

एक से ज़्यादा वैल्यू सबमिट करने के लिए, कॉमा का इस्तेमाल करें. उदाहरण के लिए, "HS256, HS512" या "RS256, PS256". हालांकि, एचएस* एल्गोरिदम को किसी और ES* एल्गोरिदम के साथ नहीं जोड़ा जा सकता. इसके लिए, उन्हें किसी खास तरह की कुंजी की ज़रूरत होगी. आप आरएस* और पीएस* एल्गोरिदम को एक साथ जोड़ सकते हैं.

डिफ़ॉल्ट लागू नहीं
मौजूदगी ज़रूरी है
स्ट्रीम किस तरह की है कॉमा-सेपरेटेड वैल्यू वाली स्ट्रिंग
मान्य वैल्यू HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<अतिरिक्त हेडर/दावा>

<AdditionalHeaders>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
    <Claim name='claim4' ref='variable-name' type='string' array='true'/>
 </AdditionalHeaders>

यह पुष्टि करता है कि JWS हेडर में, तय किया गया कोई दूसरा नाम/वैल्यू पेयर और दावा की गई वैल्यू, मेल खाती हैं या नहीं.

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

डिफ़ॉल्ट लागू नहीं
मौजूदगी ज़रूरी नहीं
स्ट्रीम किस तरह की है

स्ट्रिंग (डिफ़ॉल्ट), नंबर, बूलियन या मैप.

अगर कोई टाइप तय नहीं किया गया है, तो टाइप डिफ़ॉल्ट रूप से स्ट्रिंग को चुन लेता है.

रेंज वैल्यू पर सेट करके बताएं कि वैल्यू अलग-अलग टाइप की है या नहीं. डिफ़ॉल्ट: गलत
मान्य वैल्यू ऐसी कोई भी वैल्यू जिसे आपको दूसरे दावे के लिए इस्तेमाल करना है.

<Claim> एलिमेंट इन एट्रिब्यूट को लेता है:

  • name - (ज़रूरी है) दावे का नाम.
  • ref - (ज़रूरी नहीं) फ़्लो वैरिएबल का नाम. नीति मौजूद होने पर, इस वैरिएबल की वैल्यू दावे के तौर पर इस्तेमाल की जाएगी. अगर ref एट्रिब्यूट और अश्लील दावे की वैल्यू, दोनों के बारे में बताया गया हो, तो डिफ़ॉल्ट वैल्यू डिफ़ॉल्ट होती है. इस वैल्यू का इस्तेमाल, बताए गए फ़्लो वैरिएबल का समाधान न होने पर किया जाता है.
  • type - (ज़रूरी नहीं) इनमें से एक: स्ट्रिंग (डिफ़ॉल्ट), नंबर, बूलियन या मैप
  • array - (ज़रूरी नहीं) true पर सेट करके बताएं कि वैल्यू अलग-अलग तरह की है या नहीं. डिफ़ॉल्ट: गलत.

<DetachedContent>

<DetachedContent>variable-name-here</DetachedContent>

कॉन्टेंट पेलोड के साथ जनरेट किया गया JWS, इस तरह का है:

header.payload.signature

अगर अलग किए गए पेलोड को बनाने के लिए, GenerateJWS नीति का इस्तेमाल किया जाता है, तो जनरेट किया गया JWS, पेलोड को हटा देता है और फ़ॉर्म में दिखता है:

header..signature

अलग किए गए पेलोड के लिए, आप <DetachedContent> एलिमेंट का इस्तेमाल करके, पेलोड को ConfirmJWS नीति में पास करें. बताए गए कॉन्टेंट पेलोड को ओरिजिनल कोड में नहीं बदला जाना चाहिए. यह उस समय था जब JWS हस्ताक्षर बनाया गया था.

इस नीति से गड़बड़ी का पता चलता है, जब:

  • <DetachedContent> तब तय किया जाता है, जब JWS में कोई अलग कॉन्टेंट पेलोड न हो (यह गड़बड़ी कोड steps.jws.ContentIsNotDetached है).
  • <DetachedContent> को हटा दिया गया है और JWS में अलग किए गए कॉन्टेंट पेलोड हैं (गड़बड़ी कोड steps.jws.InvalidSignature है).
डिफ़ॉल्ट N/A
मौजूदगी ज़रूरी नहीं
स्ट्रीम किस तरह की है वैरिएबल रेफ़रंस

<ignoreHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

अगर आप चाहते हैं कि नीति में गड़बड़ी होने पर, JWS के क्रिट हेडर की सूची में कोई <KnownHeaders> हेडर न हो, तो 'गलत है' पर सेट करें. 'सही है' पर सेट करें, ताकि Jit हेडर को नज़रअंदाज़ करने के लिए, पुष्टि करने की नीति का पालन किया जा सके.

इस एलिमेंट को 'सही' पर सेट करने की एक वजह यह है कि अगर आप जांच की सुविधा वाले माहौल में हैं और हेडर मौजूद न होने की वजह से नीति को लागू नहीं करना है.

डिफ़ॉल्ट गलत
मौजूदगी ज़रूरी नहीं
स्ट्रीम किस तरह की है बूलियन
मान्य वैल्यू सही या गलत

<अनदेखा न किए गए वैरिएबल>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

अगर नीति में मौजूद, बताए गए किसी भी वैरिएबल को ठीक नहीं किया जा सकता, तो नीति को गड़बड़ी के तौर पर सेट करें. 'सही नहीं है' वाले वैरिएबल को खाली स्ट्रिंग (खाली) मानने के लिए 'सही' पर सेट करें.

डिफ़ॉल्ट गलत
मौजूदगी ज़रूरी नहीं
स्ट्रीम किस तरह की है बूलियन
मान्य वैल्यू सही या गलत

<जाने वाले हेडर>

<KnownHeaders>a,b,c</KnownHeaders>

or:

<KnownHeaders ref=’variable_containing_headers’/>

GenerateJWS नीति, टोकन में क्रिट हेडर को पॉप्युलेट करने के लिए, <CriticalHeaders> एलिमेंट का इस्तेमाल करती है. उदाहरण के लिए:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

अगर JWS नीति, JWS में मौजूद है, तो वह क्रिट हेडर की जांच करती है. साथ ही, हर सूची में मौजूद आइटम, यह जांच करता है कि <KnownHeaders> एलिमेंट भी उस हेडर की सूची दिखाता है. <KnownHeaders> एलिमेंट में क्रिकेट में दिए गए आइटम का एक सुपरसेट हो सकता है. यह ज़रूरी है कि क्रिट में दिए गए सभी हेडर <KnownHeaders> एलिमेंट में दिए गए हों. अगर किसी हेडर में वह नीति क्रिट है जो <KnownHeaders> में भी शामिल नहीं है, तो पुष्टि करने की नीति का उल्लंघन हो सकता है.

<IgnoreCriticalHeaders> एलिमेंट को true पर सेट करके, crit हेडर को अनदेखा करने के लिए, पुष्टि करने के लिए पुष्टि की नीति को वैकल्पिक रूप से कॉन्फ़िगर किया जा सकता है.

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

<PublicKey/JWKS>

<!-- Specify the JWKS. -->
<PublicKey>
   <JWKS>jwks-value-here</JWKS>
</PublicKey>

or:

<!-- Specify a variable containing the JWKS. -->
<PublicKey>
   <JWKS ref="public.jwks"/>
</PublicKey>

or:

<!-- Specify a public URL that returns the JWKS.
The URL is static, meaning you cannot set it using a variable. -->
<PublicKey>
   <JWKS uri="jwks-url"/>
</PublicKey>

JWKS फ़ॉर्मैट (RFC 7517) में वह वैल्यू बताता है जिसमें सार्वजनिक कुंजियों का सेट होता है. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम RS256/RS384/RS512, PS256/PS384/PS512 या ES256/ES384/ES512 में से किसी एक वर्शन का इस्तेमाल करता हो.

अगर इनबाउंड JWS, कुंजी आईडी दिखाता है, जो JWKS के सेट में मौजूद होता है, तो नीति JWS हस्ताक्षर की पुष्टि करने के लिए, सही सार्वजनिक कुंजी का इस्तेमाल करेगी. इस सुविधा के बारे में जानकारी के लिए, JWS की पुष्टि करने के लिए, JSON वेब कुंजी सेट (JWKS का इस्तेमाल करना) देखें.

किसी सार्वजनिक यूआरएल से वैल्यू फ़ेच करने पर, Edge JWKS को 300 सेकंड के लिए कैश मेमोरी में सेव करता है. कैश मेमोरी की समयसीमा खत्म होने पर, Edge JWKS को फिर से फ़ेच करता है.

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

<PublicKey/वैल्यू>

<PublicKey>
   <Value ref="public.publickey"/>
</PublicKey>
-or-
<PublicKey>
    <Value>
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2kPrRzcufvUNHvTH/WW
    Q0UrCw5c0+Y707KX3PpXkZGbtTT4nvU1jC0d1lHV8MfUyRXmpmnNxJHAC2F73IyN
    C5TBtXMORc+us7A2cTtC4gZV256bT4h3sIEMsDl0Joz9K9MPzVPFxa1i0RgNt06n
    Xn/Bs2UbbLlKP5Q1HPxewUDEh0gVMqz9wdIGwH1pPxKvd3NltYGfPsUQovlof3l2
    ALvO7i5Yrm96kknfFEWf1EjmCCKvz2vjVbBb6mp1ZpYfc9MOTZVpQcXSbzb/BWUo
    ZmkDb/DRW5onclGzxQITBFP3S6JXd4LNESJcTp705ec1cQ9Wp2Kl+nKrKyv1E5Xx
    DQIDAQAB
    -----END PUBLIC KEY-----
    </Value>
</PublicKey>

JWS पर हस्ताक्षर की पुष्टि करने के लिए इस्तेमाल होने वाली सार्वजनिक कुंजी के बारे में बताता है. फ़्लो वैरिएबल में कुंजी पास करने के लिए, संदर्भ एट्रिब्यूट का इस्तेमाल करें या सीधे PEM कोड में बताई गई कुंजी डालें. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम, RS256/RS384/RS512, PS256/PS384/PS512 या ES256/ES384/ES512 में से एक हो.

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

<SecretKey/वैल्यू>

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

यह टोकन के तौर पर, एचएमएसी एल्गोरिदम की मदद से टोकन की पुष्टि या हस्ताक्षर करने के लिए इस्तेमाल किया जाता है. सिर्फ़ तब इस्तेमाल करें, जब एल्गोरिदम HS256, HS384, HS512 में से किसी एक फ़ॉर्मैट में हो. फ़्लो वैरिएबल में कुंजी पास करने के लिए, ref एट्रिब्यूट का इस्तेमाल करें.

डिफ़ॉल्ट लागू नहीं
मौजूदगी एचएमएसी एल्गोरिदम के लिए ज़रूरी है.
स्ट्रीम किस तरह की है स्ट्रिंग
मान्य वैल्यू किसी स्ट्रिंग का संदर्भ देने वाला फ़्लो वैरिएबल.

ध्यान दें: अगर कोई फ़्लो वैरिएबल "निजी" प्रीफ़िक्स होना चाहिए. उदाहरण के लिए, private.mysecret

<स्रोत>

<Source>JWS-variable</Source>

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

डिफ़ॉल्ट request.header.authorization (डिफ़ॉल्ट के बारे में अहम जानकारी के लिए ऊपर दिया गया नोट देखें).
मौजूदगी ज़रूरी नहीं
स्ट्रीम किस तरह की है स्ट्रिंग
मान्य वैल्यू 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) का इस्तेमाल करना" भी देखें. ज़्यादा जानकारी के लिए (Key ID) हेडर पैरामीटर देखें.
header.type हेडर टाइप की वैल्यू. ज़्यादा जानकारी के लिए, (टाइप) हेडर पैरामीटर देखें.
header.name नाम वाले हेडर की वैल्यू (स्टैंडर्ड या अतिरिक्त). इनमें से किसी एक को JWS के हेडर वाले हिस्से में सेट किया जाएगा.
header-json JSON फ़ॉर्मैट में हेडर.
payload JWS पेलोड अगर JWS में अटैच पेलोड है. अलग की गई पेलॉड के लिए, यह वैरिएबल खाली है.
valid ConfirmJWS के मामले में, यह वैरिएबल तब सही होगा, जब हस्ताक्षर की पुष्टि हो चुकी हो. साथ ही, टोकन की समयसीमा खत्म होने से पहले और टोकन के वैल्यू के उपलब्ध न होने के बाद, टोकन के बाद का समय होता है. या फिर गलत.

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

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

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

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

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

गड़बड़ी कोड एचटीटीपी कोड स्थिति कब होता है
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 पुष्टि की प्रोसेस, एक से ज़्यादा एल्गोरिदम में होने पर लागू होती है
steps.jws.AlgorithmMismatch 401 हेडर जनरेट करने के लिए, हेडर में मौजूद एल्गोरिदम, 'पुष्टि करें' नीति में दिए गए एल्गोरिदम से मेल नहीं खाता. दिए गए एल्गोरिदम मेल खाने चाहिए.
steps.jws.ContentIsNotDetached 401 <DetachedContent> तब बताया जाता है, जब JWS में अलग किया गया कॉन्टेंट पेलोड न हो.
steps.jws.FailedToDecode 401 यह नीति JWS को डिकोड नहीं कर सकी. JWS शायद खराब है.
steps.jws.InsufficientKeyLength 401 HS256 एल्गोरिदम के लिए 32 बाइट से कम साइज़ की कुंजी के लिए
steps.jws.InvalidClaim 401 किसी गुम दावे या दावे के मेल न खाने या हेडर या हेडर के मेल न खाने पर.
steps.jws.InvalidCurve 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.KeyIdMissing 401 पुष्टि करने की नीति में सार्वजनिक कुंजी के लिए सोर्स के तौर पर JWKS का इस्तेमाल किया जाता है. हालांकि, हस्ताक्षर किए गए JWS में हेडर में kid प्रॉपर्टी नहीं होती.
steps.jws.KeyParsingFailed 401 सार्वजनिक कुंजी को दी गई कुंजी जानकारी से पार्स नहीं किया जा सका.
steps.jws.MissingPayload 401 JWS पेलोड मौजूद नहीं है.
steps.jws.NoAlgorithmFoundInHeader 401 ऐसा तब होता है, जब JWS एल्गोरिदम हेडर को हटा देता है.
steps.jws.NoMatchingPublicKey 401 पुष्टि करने की नीति में, JWKS का इस्तेमाल सार्वजनिक कुंजियों के सोर्स के तौर पर किया जाता है. हालांकि, हस्ताक्षर किए गए JWS में, kid को JWKS की सूची में शामिल नहीं किया जाता.
steps.jws.UnhandledCriticalHeader 401 crit हेडर में मौजूद 'पुष्टि करें' विकल्प की JWS नीति के तहत मिला हेडर, KnownHeaders में शामिल नहीं है.
steps.jws.UnknownException 401 कोई अज्ञात अपवाद हुआ.
steps.jws.WrongKeyType 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>