आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
क्या
क्लाइंट या दूसरे सिस्टम से मिले किसी JWS पर हस्ताक्षर की पुष्टि करता है. इस नीति की मदद से हेडर को कॉन्टेक्स्ट वैरिएबल में एक्सट्रैक्ट करता है, ताकि बाद में लागू की जाने वाली नीतियां या शर्तें जांच सकें प्राधिकरण या रूटिंग संबंधी निर्णय लेने के लिए उन वैल्यू का उपयोग करना चाहिए. ज़्यादा जानकारी के लिए, JWS और JWT की नीतियों की खास जानकारी देखें.
अगर JWS की पुष्टि हो चुकी है और मान्य है, तो इसका मतलब है कि अनुरोध को आगे बढ़ने की अनुमति है. अगर JWS के हस्ताक्षर की पुष्टि नहीं की जा सकती या इन वजहों से JWS अमान्य है किसी तरह की गड़बड़ी, सभी प्रोसेसिंग रुक जाती है, और रिस्पॉन्स में एक गड़बड़ी दिखती है.
JWS के हिस्सों और उन्हें एन्क्रिप्ट (सुरक्षित) करने और साइन करने के तरीके के बारे में जानने के लिए, यहां जाएं: RFC7515.
वीडियो
JWS पर हस्ताक्षर की पुष्टि करने का तरीका जानने के लिए, यह छोटा सा वीडियो देखें. हालांकि, यह वीडियो इनमें से कई सिद्धांत JWS के लिए एक जैसे होते हैं.
सैंपल
- HS256 से हस्ताक्षर किए गए JWS की पुष्टि करें एल्गोरिदम
- RS256 के साथ हस्ताक्षर किए गए JWS की पुष्टि करना एल्गोरिदम
अटैच किए गए JWS की पुष्टि करने के लिए, HS256 का इस्तेमाल करके हस्ताक्षर करें एल्गोरिदम
इस उदाहरण नीति में अटैच किए गए JWS की पुष्टि की गई है. इसे HS256 के एन्क्रिप्शन एल्गोरिदम, HMAC की मदद से साइन किया गया था
SHA-256 चेकसम का इस्तेमाल करके. JWS को
JWS
. कुंजी private.secretkey
नाम वाले वैरिएबल में मौजूद होती है.
अटैच किए गए JWS में, कोड में बदला गया हेडर, पेलोड, और सिग्नेचर शामिल होता है:
header.payload.signature
नीति के कॉन्फ़िगरेशन में वह जानकारी शामिल होती है जिसकी ज़रूरत Edge को JWS को डिकोड करने और आकलन करने के लिए होती है,
जैसे, JWS कहां मिलेगा (<Source>
एलिमेंट में बताए गए फ़्लो वैरिएबल में),
को साइन करने के लिए एल्गोरिदम होना ज़रूरी है और सीक्रेट कुंजी कहां मिल सकती है. इसे Edge फ़्लो वैरिएबल में स्टोर किया जाता है, जो
एज केवीएम से फिर से हासिल किए गए हैं.
<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
यह आप पर निर्भर करता है कि पेलोड को VerifyJWS नीति में पास किया जाए. इसके लिए वह वैरिएबल नाम तय करके,
<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._\-$ % . हालांकि, Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) की मदद से
पाबंदियां, जैसे कि अक्षर और अंक के अलावा किसी और वर्ण को अपने-आप हटाना.
विकल्प के तौर पर, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है
व्यवहार की जानकारी देने वाला डेटा.
नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
चालू किया गया |
नीति को लागू करने के लिए, true पर सेट करें.
|
सही | वैकल्पिक |
एक साथ काम नहीं करने वाली प्रोसेस | यह एट्रिब्यूट अब काम नहीं करता. | गलत | बहिष्कृत |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को लेबल करने के लिए, नाम एट्रिब्यूट के अलावा इस्तेमाल करें पर क्लिक करें.
डिफ़ॉल्ट | अगर इस एलिमेंट को छोड़ा जाता है, तो नीति के नाम वाले एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है. |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
<Algorithm>
<Algorithm>HS256</Algorithm>
इस नीति से, टोकन पर हस्ताक्षर करने के लिए, एन्क्रिप्ट (सुरक्षित) करने का एल्गोरिदम तय किया जाता है. RS*/PS*/ES* एल्गोरिदम, सार्वजनिक/सीक्रेट कुंजी का जोड़ा इस्तेमाल करते हैं, जबकि HS* एल्गोरिदम एक ही रहस्य का इस्तेमाल करते हैं. यह भी देखें हस्ताक्षर को एन्क्रिप्ट (सुरक्षित) करने के एल्गोरिदम के बारे में जानकारी.
एक से ज़्यादा वैल्यू दी जा सकती हैं और उन्हें कॉमा लगाकर अलग किया जा सकता है. उदाहरण के लिए "HS256, HS512" या "RS256, PS256" शामिल न करें. हालांकि, आप एचएस* एल्गोरिदम को किसी दूसरे के साथ या ES* एल्गोरिदम को किसी दूसरे के साथ नहीं मिला सकते, क्योंकि वे एक खास तरह की कुंजी होनी चाहिए. RS* और PS* एल्गोरिदम को एक साथ जोड़ा जा सकता है.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | ज़रूरी है |
स्ट्रीम किस तरह की है | कॉमा लगाकर अलग की गई वैल्यू की स्ट्रिंग |
मान्य वैल्यू | एचएस256, एचएस384, एचएस512, आरएस256, आरएस384, आरएस512, ES256, ES384, ES512, PS256, PS384, PS512 |
<AdditionalHeaders/Claim>
<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 के रजिस्टर किए गए स्टैंडर्ड नामों में से एक नहीं है. किसी दूसरे दावे की वैल्यू कोई स्ट्रिंग, संख्या, बूलियन, मैप या अरे हो सकती है. मैप नाम/वैल्यू पेयर का सेट होता है. इनमें से किसी भी तरह के दावे के लिए, वैल्यू सेट की जा सकती है नीति कॉन्फ़िगरेशन में या किसी फ़्लो वैरिएबल के रेफ़रंस के ज़रिए साफ़ तौर पर बताया गया हो.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है |
स्ट्रिंग (डिफ़ॉल्ट), संख्या, बूलियन या मैप. अगर कोई टाइप तय नहीं किया गया है, तो टाइप डिफ़ॉल्ट रूप से स्ट्रिंग का विकल्प होता है. |
कलेक्शन | true पर सेट करके बताएं कि वैल्यू, अलग-अलग तरह के कलेक्शन में से कोई एक है. डिफ़ॉल्ट: असत्य |
मान्य वैल्यू | कोई भी वैल्यू, जिसका इस्तेमाल आपको दूसरे दावे के लिए करना है. |
<Claim>
एलिमेंट में ये एट्रिब्यूट इस्तेमाल किए जाते हैं:
- name - (ज़रूरी है) दावे का नाम.
- ref - (ज़रूरी नहीं) फ़्लो वैरिएबल का नाम. अगर यह वैल्यू मौजूद है, तो नीति इस वैल्यू का इस्तेमाल करेगी दावे के तौर पर इस्तेमाल किया जा सकता है. अगर ref एट्रिब्यूट और किसी साफ़ दावे की वैल्यू, दोनों के बारे में बताया गया है, तो एक्सप्लिसिट वैल्यू डिफ़ॉल्ट होती है. इसका इस्तेमाल तब किया जाता है, जब रेफ़रंस फ़्लो वैरिएबल से समस्या हल न हो.
- type - (ज़रूरी नहीं) इनमें से कोई एक: स्ट्रिंग (डिफ़ॉल्ट), संख्या, बूलियन या मैप
- array - (ज़रूरी नहीं) true पर सेट करके बताएं कि वैल्यू, अलग-अलग टाइप के कलेक्शन में से एक है या नहीं. डिफ़ॉल्ट: गलत.
<DetachedContent>
<DetachedContent>variable-name-here</DetachedContent>
कॉन्टेंट पेलोड के साथ जनरेट किया गया JWS इस फ़ॉर्मैट में होता है:
header.payload.signature
डिटैच किया गया पेलोड बनाने के लिए अगर GenerateJWS नीति का इस्तेमाल किया जाता है, तो जनरेट किया गया JWS, पेलोड को हटा देता है और फ़ॉर्म में:
header..signature
डिटैच किए गए पेलोड के लिए, यह आपकी ज़िम्मेदारी है कि
<DetachedContent>
एलिमेंट. कॉन्टेंट के पेलोड को
बिना एन्कोडेड ओरिजनल फ़ॉर्मैट में बनाया गया था. ऐसा तब किया गया था, जब JWS हस्ताक्षर बनाया गया था.
इस नीति के तहत गड़बड़ी तब दिखती है, जब:
<DetachedContent>
का इस्तेमाल तब किया जाता है, जब JWS में डिटैच किया गया कॉन्टेंट न हो पेलोड (गड़बड़ी का कोडsteps.jws.ContentIsNotDetached
है).<DetachedContent>
को शामिल नहीं किया गया है और JWS के पास डिटैच किया गया कॉन्टेंट पेलोड है (गलत कोडsteps.jws.InvalidSignature
है).
डिफ़ॉल्ट | N/A |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | वैरिएबल रेफ़रंस |
<IgnoreCriticalHeaders>
<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>
अगर आप चाहते हैं कि नीति की वजह से, 'गलत' पर सेट हो, तो
JWS का crit हेडर, <KnownHeaders>
एलिमेंट में शामिल नहीं है.
'सही' पर सेट करें, ताकि VerifyJWS नीति crit हेडर को अनदेखा कर दे.
इस एलिमेंट को सही पर सेट करने की एक वजह यह भी हो सकती है कि आप टेस्टिंग एनवायरमेंट में हों और नहीं चाहते कि हेडर मौजूद न होने की वजह से नीति लागू न हो.
डिफ़ॉल्ट | गलत |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | बूलियन |
मान्य वैल्यू | सही या गलत |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
अगर आपको किसी रेफ़रंस वैरिएबल के बताए जाने पर, नीति से गड़बड़ी की सूचना देनी है, तो 'गलत' पर सेट करें हल नहीं किया जा सकता. किसी भी रिज़ॉल्व नहीं किए जा सकने वाले वैरिएबल को खाली स्ट्रिंग के तौर पर ट्रीट करने के लिए, 'सही' पर सेट करें (शून्य).
डिफ़ॉल्ट | गलत |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | बूलियन |
मान्य वैल्यू | सही या गलत |
<KnownHeaders>
<KnownHeaders>a,b,c</KnownHeaders> or: <KnownHeaders ref=’variable_containing_headers’/>
जनरेट की गई एपीआई की जानकारी को पॉप्युलेट करने के लिए, GenerateJWS नीति <CriticalHeaders>
एलिमेंट का इस्तेमाल करती है
टोकन में crit हेडर. उदाहरण के लिए:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
VerifyJWS नीति, JWS में crit हेडर की जांच करती है. अगर यह मौजूद है, तो यहां दिए गए हर आइटम के लिए इसका पता लगाया जाता है
जांच करता है कि <KnownHeaders>
एलिमेंट में वह हेडर भी शामिल है या नहीं. कॉन्टेंट बनाने
<KnownHeaders>
एलिमेंट में crit में दिए गए आइटम का सुपरसेट शामिल हो सकता है.
केवल यह आवश्यक है कि crit में सूचीबद्ध सभी हेडर
<KnownHeaders>
एलिमेंट. ऐसा कोई भी हेडर जो नीति को crit में मिलता है
जिसकी जानकारी <KnownHeaders>
में भी नहीं दी गई है उसकी वजह से VerifyJWS नीति फ़ेल हो जाती है.
crit हेडर को अनदेखा करने के लिए, VerifyJWS नीति को वैकल्पिक तौर पर कॉन्फ़िगर किया जा सकता है
<IgnoreCriticalHeaders>
एलिमेंट को true
पर सेट करना.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | कॉमा से अलग की गई स्ट्रिंग का अरे |
मान्य वैल्यू | कोई अरे या अरे वाले वैरिएबल का नाम. |
<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 की पुष्टि करने के लिए, JSON Web Key सेट (JWKS) का इस्तेमाल करना.
अगर किसी सार्वजनिक यूआरएल से वैल्यू फ़ेच की जाती है, तो Edge 300 सेकंड के लिए JWKS को कैश मेमोरी में सेव करता है. कैश मेमोरी की समयसीमा खत्म होने पर, Edge फिर से JWKS फ़ेच कर लेता है.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | आरएसए एल्गोरिदम का इस्तेमाल करके JWS की पुष्टि करने के लिए, आपको या तो JWKS या वैल्यू का इस्तेमाल करना होगा एलिमेंट. |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | फ़्लो वैरिएबल, स्ट्रिंग की वैल्यू या यूआरएल. |
<PublicKey/Value>
<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/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
यह नीति एचएमएसी एल्गोरिदम की मदद से, टोकन की पुष्टि करने या उन पर हस्ताक्षर करने के लिए इस्तेमाल की जाने वाली सीक्रेट कुंजी देती है. सिर्फ़ इस्तेमाल के लिए जब एल्गोरिदम HS256, HS384, HS512 में से कोई एक हो. ref एट्रिब्यूट का इस्तेमाल करना का इस्तेमाल करें.
डिफ़ॉल्ट | लागू नहीं |
मौजूदगी | HMAC एल्गोरिदम के लिए ज़रूरी है. |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू |
स्ट्रिंग को रेफ़र करने वाला फ़्लो वैरिएबल.
ध्यान दें: अगर फ़्लो वैरिएबल है, तो उसका प्रीफ़िक्स "निजी" होना चाहिए. उदाहरण के लिए,
|
<Source>
<Source>JWS-variable</Source>
अगर यह मौजूद है, तो यह उस फ़्लो वैरिएबल के बारे में बताता है जिसमें नीति के मुताबिक, JWS को पुष्टि करें.
डिफ़ॉल्ट | request.header.authorization (अहम जानकारी के लिए ऊपर दिया गया नोट देखें
डिफ़ॉल्ट के बारे में जानकारी). |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | एज फ़्लो वैरिएबल का नाम. |
फ़्लो वैरिएबल
सफलता मिलने के बाद, 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.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. |
|
डिप्लॉयमेंट की दूसरी संभावित गड़बड़ियां. |
गड़बड़ी के वैरिएबल
रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
वैरिएबल | कहां | उदाहरण |
---|---|---|
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>