आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
क्या
यह हस्ताक्षर किया गया JWT जनरेट करता है. इसमें कॉन्फ़िगर किए जा सकने वाले दावों का सेट होता है. इसके बाद, JWT को क्लाइंट को वापस भेजा जा सकता है, बैकएंड टारगेट को भेजा जा सकता है या अन्य तरीकों से इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, JWS और JWT नीतियों की खास जानकारी देखें.
वीडियो
हस्ताक्षर किया गया JWT जनरेट करने का तरीका जानने के लिए, यह छोटा वीडियो देखें.
सैंपल
HS256 एल्गोरिदम का इस्तेमाल करके हस्ताक्षर किया गया JWT जनरेट करें
नीति के इस उदाहरण में, एक नया JWT जनरेट किया जाता है और HS256 एल्गोरिदम का इस्तेमाल करके उस पर हस्ताक्षर किया जाता है. HS256, हस्ताक्षर करने और हस्ताक्षर की पुष्टि करने, दोनों के लिए एक सीक्रेट पासवर्ड पर निर्भर करता है.
इस नीति के लागू होने पर, Edge, JWT हेडर और पेलोड को एन्कोड करता है. इसके बाद, JWT पर डिजिटल हस्ताक्षर करता है. नीति के तहत अनुरोध करने के तरीके के साथ-साथ पूरा उदाहरण देखने के लिए, ऊपर दिया गया वीडियो देखें.
यहां नीति कॉन्फ़िगरेशन, स्टैंडर्ड दावों के सेट के साथ एक JWT बनाएगा. इसे JWT स्पेसिफ़िकेशन के हिसाब से तय किया गया है. इसमें एक घंटे की समयसीमा खत्म होने के साथ-साथ एक अतिरिक्त दावा भी शामिल है. आपके पास, अपनी पसंद के मुताबिक जितने चाहें उतने अतिरिक्त दावे शामिल करने का विकल्प है. इस सैंपल नीति में मौजूद हर एलिमेंट की ज़रूरी शर्तों और विकल्पों के बारे में जानने के लिए, एलिमेंट रेफ़रंस देखें.
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
इससे मिलने वाले JWT में यह हेडर होगा …
{
"typ" : "JWT",
"alg" : "HS256",
"kid" : "1918290"
}… और इसमें इस तरह का पेलोड होगा:
{
"sub" : "monty-pythons-flying-circus",
"iss" : "urn://apigee-edge-JWT-policy-test",
"aud" : "show",
"iat" : 1506553019,
"exp" : 1506556619,
"jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37",
"show": "And now for something completely different."
}iat, exp, और jti दावों की वैल्यू अलग-अलग होंगी.
RS256 एल्गोरिदम का इस्तेमाल करके हस्ताक्षर किया गया JWT जनरेट करना
नीति का यह उदाहरण, एक नया JWT जनरेट करता है और RS256 एल्गोरिदम का इस्तेमाल करके उस पर हस्ताक्षर करता है. RS256 सिग्नेचर जनरेट करने के लिए, RSA निजी कुंजी की ज़रूरत होती है. इसे PEM-encoded फ़ॉर्म में उपलब्ध कराया जाना चाहिए. नीति के तहत अनुरोध करने के तरीके के साथ-साथ पूरा उदाहरण देखने के लिए, ऊपर दिया गया वीडियो देखें.
इस नीति के लागू होने पर, Edge, JWT को एन्कोड करता है और उस पर डिजिटल हस्ताक्षर करता है. इसमें दावे भी शामिल होते हैं. JWT के हिस्सों और उन्हें एन्क्रिप्ट (सुरक्षित) और साइन करने के तरीके के बारे में जानने के लिए, RFC7519 देखें.
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
मुख्य एलिमेंट सेट करना
JWT जनरेट करने के लिए इस्तेमाल की गई कुंजी के बारे में बताने वाले एलिमेंट, चुने गए एल्गोरिदम पर निर्भर करते हैं. इस बारे में यहां दी गई टेबल में बताया गया है:
| एल्गोरिदम | मुख्य एलिमेंट | |
|---|---|---|
| HS{256/384/512}* | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> |
|
| RS/PS/ES{256/384/512}* | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey>
|
|
| *कुंजी से जुड़ी ज़रूरी शर्तों के बारे में ज़्यादा जानने के लिए, हस्ताक्षर एन्क्रिप्ट (सुरक्षित) करने के एल्गोरिदम के बारे में जानकारी लेख पढ़ें. | ||
Generate JWT के लिए एलिमेंट रेफ़रंस
नीति के रेफ़रंस में, Generate JWT नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
ध्यान दें: कॉन्फ़िगरेशन, इस्तेमाल किए जा रहे एन्क्रिप्शन एल्गोरिदम के हिसाब से थोड़ा अलग होगा. इस्तेमाल के उदाहरणों के लिए, सैंपल देखें. इनमें खास इस्तेमाल के उदाहरणों के लिए कॉन्फ़िगरेशन दिखाए गए हैं.
ऐसे एट्रिब्यूट जो टॉप-लेवल एलिमेंट पर लागू होते हैं
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
नीति के सभी पैरंट एलिमेंट में ये एट्रिब्यूट एक जैसे होते हैं.
| एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | उपलब्धता |
|---|---|---|---|
| नाम |
नीति का इंटरनल नाम. नाम में सिर्फ़ इन वर्णों का इस्तेमाल किया जा सकता है:
A-Z0-9._\-$ %. हालांकि, Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में कुछ और पाबंदियां लागू होती हैं. जैसे, अल्फ़ान्यूमेरिक वर्णों के अलावा अन्य वर्णों को अपने-आप हटा दिया जाता है.
इसके अलावा, |
लागू नहीं | ज़रूरी है |
| continueOnError |
नीति के उल्लंघन की वजह से गड़बड़ी होने पर, इसे false पर सेट करें. ज़्यादातर नीतियों के लिए, ऐसा होना आम बात है.
इस विकल्प को |
गलत | वैकल्पिक |
| चालू किया गया |
नीति लागू करने के लिए, इसे true पर सेट करें.
नीति को "बंद करें" के लिए, |
सही | वैकल्पिक |
| एक साथ काम नहीं करने वाली प्रोसेस | यह एट्रिब्यूट अब काम नहीं करता. | गलत | बहिष्कृत |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
इस एट्रिब्यूट का इस्तेमाल, नाम एट्रिब्यूट के साथ किया जाता है. इससे मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में, नीति को किसी दूसरे नाम से लेबल किया जा सकता है.
| डिफ़ॉल्ट | इस एलिमेंट को शामिल न करने पर, नीति के नाम एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है. |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
यह कुकी, टोकन पर हस्ताक्षर करने के लिए एन्क्रिप्शन एल्गोरिदम तय करती है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | ज़रूरी है |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
यह नीति, एक JWT जनरेट करती है. इसमें aud दावा होता है, जिसे तय की गई वैल्यू पर सेट किया जाता है. इस दावे से उन लोगों की पहचान होती है जिनके लिए JWT बनाया गया है. यह RFC7519 में बताए गए, रजिस्टर किए गए दावों में से एक है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | ऐरे (कॉमा लगाकर अलग की गई वैल्यू की सूची) |
| मान्य वैल्यू | ऑडियंस की पहचान करने वाली कोई भी जानकारी. |
<AdditionalClaims/Claim>
<AdditionalClaims> <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'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
इस विकल्प की मदद से, JWT के पेलोड में अतिरिक्त दावा करने वाले का नाम/वैल्यू पेयर तय किया जा सकता है. स्ट्रिंग, संख्या, बूलियन, मैप या ऐरे के तौर पर, दावे के बारे में साफ़ तौर पर बताया जा सकता है. मैप, नाम/वैल्यू के जोड़े का एक सेट होता है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| मान्य वैल्यू | कोई भी ऐसी वैल्यू जिसका इस्तेमाल आपको किसी अतिरिक्त दावे के लिए करना है. स्ट्रिंग, संख्या, बूलियन, मैप या ऐरे के तौर पर, दावे के बारे में साफ़ तौर पर बताया जा सकता है. |
<Claim> एलिमेंट में ये एट्रिब्यूट शामिल होते हैं:
- name - (ज़रूरी है) दावे का नाम.
- ref - (ज़रूरी नहीं) फ़्लो वैरिएबल का नाम. अगर यह मौजूद है, तो नीति इस वैरिएबल की वैल्यू का इस्तेमाल दावे के तौर पर करेगी. अगर ref एट्रिब्यूट और साफ़ तौर पर बताई गई दावा वैल्यू, दोनों को सेट किया जाता है, तो साफ़ तौर पर बताई गई वैल्यू डिफ़ॉल्ट वैल्यू होती है. इसका इस्तेमाल तब किया जाता है, जब रेफ़रंस किए गए फ़्लो वैरिएबल को हल नहीं किया जाता है.
- type - (वैकल्पिक) इनमें से कोई एक: स्ट्रिंग (डिफ़ॉल्ट), संख्या, बूलियन या मैप
- array - (ज़रूरी नहीं) अगर वैल्यू टाइप की एक सरणी है, तो इसे true पर सेट करें. डिफ़ॉल्ट: गलत.
<Claim> एलिमेंट को शामिल करने पर, नीति को कॉन्फ़िगर करते समय दावे के नाम स्टैटिक तौर पर सेट किए जाते हैं. इसके अलावा, दावा करने वालों के नाम तय करने के लिए, JSON ऑब्जेक्ट पास किया जा सकता है.
JSON ऑब्जेक्ट को वैरिएबल के तौर पर पास किया जाता है. इसलिए, जनरेट किए गए JWT में दावे के नाम, रनटाइम पर तय किए जाते हैं.
उदाहरण के लिए:
<AdditionalClaims ref='json_claims'/>
यहां json_claims वैरिएबल में, इस फ़ॉर्म में JSON ऑब्जेक्ट शामिल होता है:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
जनरेट किए गए JWT में, JSON ऑब्जेक्ट में मौजूद सभी दावे शामिल होते हैं.
<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>
यह JWT के हेडर में, दावे के नाम/वैल्यू पेयर को रखता है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| मान्य वैल्यू | कोई भी ऐसी वैल्यू जिसका इस्तेमाल आपको किसी अतिरिक्त दावे के लिए करना है. स्ट्रिंग, संख्या, बूलियन, मैप या ऐरे के तौर पर, दावे के बारे में साफ़ तौर पर बताया जा सकता है. |
<Claim> एलिमेंट में ये एट्रिब्यूट शामिल होते हैं:
- name - (ज़रूरी है) दावे का नाम.
- ref - (ज़रूरी नहीं) फ़्लो वैरिएबल का नाम. अगर यह मौजूद है, तो नीति इस वैरिएबल की वैल्यू का इस्तेमाल दावे के तौर पर करेगी. अगर ref एट्रिब्यूट और साफ़ तौर पर बताई गई दावा वैल्यू, दोनों को सेट किया जाता है, तो साफ़ तौर पर बताई गई वैल्यू डिफ़ॉल्ट वैल्यू होती है. इसका इस्तेमाल तब किया जाता है, जब रेफ़रंस किए गए फ़्लो वैरिएबल को हल नहीं किया जाता है.
- type - (वैकल्पिक) इनमें से कोई एक: स्ट्रिंग (डिफ़ॉल्ट), संख्या, बूलियन या मैप
- array - (ज़रूरी नहीं) अगर वैल्यू टाइप की एक सरणी है, तो इसे true पर सेट करें. डिफ़ॉल्ट: गलत.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
यह JWT हेडर में ज़रूरी हेडर, crit जोड़ता है. crit हेडर, हेडर के नामों का एक ऐसा कलेक्शन होता है जिनके बारे में JWT पाने वाले व्यक्ति को पता होना चाहिए और वह उन्हें पहचानता हो. उदाहरण के लिए:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}रनटाइम के दौरान, VerifyJWT नीति, crit हेडर की जांच करती है.
crit हेडर में शामिल हर आइटम के लिए, यह जांच करता है कि VerifyJWT नीति के <KnownHeaders> एलिमेंट में भी वह हेडर शामिल हो. अगर VerifyJWT नीति को crit में कोई ऐसा हेडर मिलता है जो <KnownHeaders> में शामिल नहीं है, तो VerifyJWT नीति लागू नहीं होगी.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | कॉमा लगाकर अलग की गई स्ट्रिंग की ऐरे |
| मान्य वैल्यू | यह एक ऐरे या ऐरे को शामिल करने वाले वैरिएबल का नाम होता है. |
<CustomClaims>
ध्यान दें: फ़िलहाल, यूज़र इंटरफ़ेस (यूआई) के ज़रिए नई GenerateJWT नीति जोड़ने पर, CustomClaims एलिमेंट डाला जाता है. यह एलिमेंट काम नहीं करता और इसे अनदेखा कर दिया जाता है. इसके बजाय, <AdditionalClaims> एलिमेंट का इस्तेमाल करें. यूज़र इंटरफ़ेस (यूआई) को बाद में अपडेट किया जाएगा, ताकि सही एलिमेंट डाले जा सकें.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
यह JWT की अवधि को मिलीसेकंड, सेकंड, मिनट, घंटे या दिनों में तय करता है.
| डिफ़ॉल्ट | N/A |
| उपलब्धता | वैकल्पिक |
| समस्या | पूर्णांक |
| मान्य वैल्यू |
वैल्यू या वैल्यू वाले फ़्लो वैरिएबल का रेफ़रंस. टाइम यूनिट को इस तरह से बताया जा सकता है:
उदाहरण के लिए, |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
यह कुकी, jti के दावे के साथ JWT जनरेट करती है. अगर टेक्स्ट वैल्यू और ref एट्रिब्यूट, दोनों खाली हैं, तो नीति एक ऐसा jti जनरेट करेगी जिसमें रैंडम UUID शामिल होगा. JWT आईडी (jti) दावा, JWT के लिए यूनीक आइडेंटिफ़ायर होता है. jti के बारे में ज़्यादा जानकारी के लिए, RFC7519 देखें.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग या रेफ़रंस. |
| मान्य वैल्यू | यह एक स्ट्रिंग या आईडी वाला फ़्लो वैरिएबल का नाम होता है. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
अगर आपको नीति में मौजूद किसी भी रेफ़रंस किए गए वैरिएबल को हल न किए जाने पर, नीति से गड़बड़ी का मैसेज दिखाना है, तो इसे 'गलत है' पर सेट करें. इस विकल्प को सही पर सेट करने से, हल न किए जा सकने वाले किसी भी वैरिएबल को खाली स्ट्रिंग (शून्य) के तौर पर माना जाता है.
| डिफ़ॉल्ट | गलत |
| उपलब्धता | वैकल्पिक |
| समस्या | बूलियन |
| मान्य वैल्यू | सही या गलत |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
यह नीति, iss नाम वाला दावा करने वाला एक JWT जनरेट करती है. इसकी वैल्यू, तय की गई वैल्यू पर सेट होती है. यह दावा, JWT जारी करने वाले की पहचान करता है. यह RFC7519 में बताई गई, रजिस्टर की गई दावों की सूची में से एक है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग या रेफ़रंस |
| मान्य वैल्यू | कोई भी |
<NotBefore>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
इससे पता चलता है कि टोकन कब मान्य होगा. यह टोकन, तय की गई समयसीमा तक अमान्य है. आपके पास ऐब्सलूट टाइम वैल्यू या टोकन जनरेट होने के समय के हिसाब से टाइम वैल्यू तय करने का विकल्प होता है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू | नीचे देखें. |
समय की सटीक वैल्यू के लिए, NotBefore एलिमेंट की मान्य समय वैल्यू
| नाम | फ़ॉर्मैट | उदाहरण |
| क्रम से लगाया जा सकता है | yyyy-MM-dd'T'HH:mm:ss.SSSZ |
2017-08-14T11:00:21.269-0700 |
| RFC 1123 | EEE, dd MMM yyyy HH:mm:ss zzz |
सोमवार, 14 अगस्त, 2017 11:00:21 PDT |
| RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
सोमवार, 14 अगस्त, 2017 सुबह 11:00:21 बजे पीडीटी |
| एएनसीआई-सी | EEE MMM d HH:mm:ss yyyy |
सोमवार 14 अगस्त 2017 11:00:21 |
रिलेटिव टाइम वैल्यू के लिए, पूर्णांक और समयावधि तय करें. उदाहरण के लिए:
- 10 सेकंड
- 60 मीटर
- 12 घंटे
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
यह बताता है कि इस नीति से जनरेट किए गए JWT को कहां रखना है. डिफ़ॉल्ट रूप से, इसे फ़्लो वैरिएबल jwt.POLICYNAME.generated_jwt में रखा जाता है.
| डिफ़ॉल्ट | jwt.POLICYNAME.generated_jwt |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग (फ़्लो वैरिएबल का नाम) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
यह JWT हेडर में शामिल करने के लिए, कुंजी आईडी (kid) के बारे में बताता है. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम RS256/RS384/RS512, PS256/PS384/PS512 या ES256/ES384/ES512 में से कोई एक हो.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू | फ़्लो वैरिएबल या स्ट्रिंग |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
अगर ज़रूरी हो, तो वह पासवर्ड डालें जिसका इस्तेमाल नीति को निजी कुंजी डिक्रिप्ट करने के लिए करना चाहिए. फ़्लो वैरिएबल में कुंजी पास करने के लिए, ref एट्रिब्यूट का इस्तेमाल करें. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम RS256/RS384/RS512, PS256/PS384/PS512 या ES256/ES384/ES512 में से कोई एक हो.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू |
फ़्लो वैरिएबल का रेफ़रंस.
ध्यान दें: आपको फ़्लो वैरिएबल तय करना होगा. Edge, ऐसे नीति कॉन्फ़िगरेशन को अमान्य के तौर पर अस्वीकार कर देगा जिसमें पासवर्ड को सादे टेक्स्ट में बताया गया हो. फ़्लो वैरिएबल में "private" प्रीफ़िक्स होना चाहिए. उदाहरण के लिए, |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
यह JWT पर हस्ताक्षर करने के लिए इस्तेमाल की गई, PEM-encoded निजी कुंजी के बारे में बताता है. फ़्लो वैरिएबल में कुंजी पास करने के लिए, ref एट्रिब्यूट का इस्तेमाल करें. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम RS256/RS384/RS512, PS256/PS384/PS512 या ES256/ES384/ES512 में से कोई एक हो.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | RS256 एल्गोरिदम का इस्तेमाल करके JWT जनरेट करने के लिए ज़रूरी है. |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू |
यह फ़्लो वैरिएबल है. इसमें एक स्ट्रिंग होती है, जो PEM-encoded RSA निजी कुंजी की वैल्यू को दिखाती है.
ध्यान दें: फ़्लो वैरिएबल में "private" प्रीफ़िक्स होना चाहिए. उदाहरण के लिए,
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
इस विकल्प से, एचएमएसी एल्गोरिदम से साइन किए गए JWT के हेडर में शामिल करने के लिए, कुंजी आईडी (kid) तय किया जाता है. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम HS256/HS384/HS512 में से कोई एक हो.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू | फ़्लो वैरिएबल या स्ट्रिंग |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
यह एचएमएसी एल्गोरिदम की मदद से टोकन की पुष्टि करने या उन पर हस्ताक्षर करने के लिए इस्तेमाल की गई सीक्रेट कुंजी उपलब्ध कराता है. इसका इस्तेमाल सिर्फ़ तब करें, जब एल्गोरिदम HS256/HS384/HS512 में से कोई एक हो. फ़्लो वैरिएबल में कुंजी पास करने के लिए, ref एट्रिब्यूट का इस्तेमाल करें.
Edge, HS256/HS384/HS512 एल्गोरिदम के लिए, कम से कम की स्ट्रेंथ लागू करता है. HS256 के लिए, कुंजी की कम से कम लंबाई 32 बाइट, HS384 के लिए 48 बाइट, और HS512 के लिए 64 बाइट होनी चाहिए. कमज़ोर कुंजी का इस्तेमाल करने पर, रनटाइम में गड़बड़ी होती है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | HMAC एल्गोरिदम के लिए ज़रूरी है. |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू |
स्ट्रिंग का रेफ़रंस देने वाला फ़्लो वैरिएबल
ध्यान दें: अगर कोई फ़्लो वैरिएबल है, तो उसमें "private" प्रीफ़िक्स होना चाहिए. उदाहरण के लिए, |
<Subject>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
उदाहरण के लिए:
<Subject ref="apigee.developer.email"/>
यह नीति, sub दावा करने वाला JWT जनरेट करती है. इसे बताई गई वैल्यू पर सेट किया जाता है. यह दावा, JWT के विषय की पहचान करता है या उसके बारे में कोई स्टेटमेंट देता है. यह RFC7519 में बताए गए स्टैंडर्ड सेट ऑफ़ क्लेम में से एक है.
| डिफ़ॉल्ट | लागू नहीं |
| उपलब्धता | वैकल्पिक |
| समस्या | स्ट्रिंग |
| मान्य वैल्यू | कोई भी ऐसी वैल्यू जो किसी विषय या वैल्यू का रेफ़रंस देने वाले फ़्लो वैरिएबल की खास पहचान करती हो. |
फ़्लो वैरिएबल
Generate JWT नीति, फ़्लो वैरिएबल सेट नहीं करती है.
गड़बड़ी की जानकारी
यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
| गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | कब होता है |
|---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | ऐसा तब होता है, जब पुष्टि की नीति में एक से ज़्यादा एल्गोरिदम होते हैं. |
steps.jwt.AlgorithmMismatch |
401 | जनरेट करने की नीति में बताए गए एल्गोरिदम, पुष्टि करने की नीति में मौजूद एल्गोरिदम से मेल नहीं खाते. तय किए गए एल्गोरिदम मेल खाने चाहिए. |
steps.jwt.FailedToDecode |
401 | नीति, JWT को डिकोड नहीं कर सकी. JWT शायद खराब है. |
steps.jwt.GenerationFailed |
401 | नीति, JWT जनरेट नहीं कर सकी. |
steps.jwt.InsufficientKeyLength |
401 | HS256 एल्गोरिदम के लिए 32 बाइट से कम की कुंजी के लिए, HS386 एल्गोरिदम के लिए 48 बाइट से कम और HS512 एल्गोरिदम के लिए 64 बाइट से कम की कुंजी के लिए. |
steps.jwt.InvalidClaim |
401 | ऐसा दावा जो मौजूद नहीं है या दावे से मेल नहीं खाता, या हेडर या हेडर मेल नहीं खाता. |
steps.jwt.InvalidCurve |
401 | कुंजी से तय किया गया कर्व, एलिप्टिक कर्व एल्गोरिदम के लिए मान्य नहीं है. |
steps.jwt.InvalidJsonFormat |
401 | हेडर या पेलोड में अमान्य JSON मिला है. |
steps.jwt.InvalidToken |
401 | यह गड़बड़ी तब होती है, जब JWT हस्ताक्षर की पुष्टि नहीं हो पाती. |
steps.jwt.JwtAudienceMismatch |
401 | टोकन की पुष्टि नहीं करने पर ऑडियंस क्लेम नहीं किया जा सका. |
steps.jwt.JwtIssuerMismatch |
401 | टोकन की पुष्टि करने के दौरान, कार्ड जारी करने वाले बैंक या कंपनी का दावा नहीं किया जा सका. |
steps.jwt.JwtSubjectMismatch |
401 | टोकन की पुष्टि नहीं होने की वजह से, विषय पर दावा नहीं किया जा सका. |
steps.jwt.KeyIdMissing |
401 | पुष्टि करने की नीति, सार्वजनिक कुंजियों के लिए सोर्स के तौर पर JWKS का इस्तेमाल करती है, लेकिन हस्ताक्षर किए गए JWT में हेडर में kid प्रॉपर्टी शामिल नहीं होती. |
steps.jwt.KeyParsingFailed |
401 | सार्वजनिक कुंजी को दी गई कुंजी से पार्स नहीं किया जा सका. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | ऐसा तब होता है, जब JWT में कोई एल्गोरिदम हेडर नहीं होता. |
steps.jwt.NoMatchingPublicKey |
401 | पुष्टि करने की नीति, सार्वजनिक कुंजियों के लिए सोर्स के तौर पर JWKS का इस्तेमाल करती है. हालांकि, साइन किए गए JWT में मौजूद kid, JWKS की सूची में शामिल नहीं है. |
steps.jwt.SigningFailed |
401 | GenJWT में, HS384 या HS512 एल्गोरिदम के लिए तय की गई सबसे कम साइज़ से कम कुंजी के लिए |
steps.jwt.TokenExpired |
401 | नीति ऐसे टोकन की पुष्टि करने की कोशिश करती है जिसकी समयसीमा खत्म हो चुकी है. |
steps.jwt.TokenNotYetValid |
401 | टोकन अभी तक मान्य नहीं है. |
steps.jwt.UnhandledCriticalHeader |
401 | crit हेडर में, ‘JWT की पुष्टि करें’ नीति से मिले हेडर की जानकारी
KnownHeaders में नहीं दी गई है. |
steps.jwt.UnknownException |
401 | एक अज्ञात अपवाद हुआ. |
steps.jwt.WrongKeyType |
401 | कुंजी का गलत प्रकार बताया गया. उदाहरण के लिए, अगर आपने एलिप्टिक कर्व एल्गोरिदम के लिए आरएसए कुंजी या आरएसए एल्गोरिदम के लिए कोई कर्व कुंजी तय की है. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
| गड़बड़ी का नाम | वजह | समाधान |
|---|---|---|
InvalidNameForAdditionalClaim |
अगर <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim> में इस्तेमाल किया गया दावा, इनमें से कोई एक रजिस्टर किया गया नाम है, तो डिप्लॉयमेंट नहीं हो पाएगा:
kid, iss, sub, aud, iat,
exp, nbf या jti.
|
build |
InvalidTypeForAdditionalClaim |
अगर <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim>
में इस्तेमाल किया गया दावा string, number, boolean या map टाइप का नहीं है, तो डिप्लॉयमेंट नहीं हो पाएगा.
|
build |
MissingNameForAdditionalClaim |
अगर <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim> में दावे का नाम नहीं बताया गया है, तो डिप्लॉयमेंट की प्रोसेस पूरी नहीं हो पाएगी.
|
build |
InvalidNameForAdditionalHeader |
यह गड़बड़ी तब होती है, जब <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim> में इस्तेमाल किए गए दावे का नाम alg या typ होता है.
|
build |
InvalidTypeForAdditionalHeader |
अगर <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim> में इस्तेमाल किए गए दावे का टाइप string, number, boolean या map नहीं है, तो डिप्लॉयमेंट की प्रोसेस रद्द नहीं होगी.
|
build |
InvalidValueOfArrayAttribute |
यह गड़बड़ी तब होती है, जब <AdditionalClaims> एलिमेंट के चाइल्ड एलिमेंट <Claim> में ऐरे एट्रिब्यूट की वैल्यू, true या false पर सेट न की गई हो.
|
build |
InvalidConfigurationForActionAndAlgorithm |
अगर <PrivateKey> एलिमेंट का इस्तेमाल एचएस फ़ैमिली एल्गोरिदम के साथ किया गया है या
<SecretKey> एलिमेंट का इस्तेमाल आरएसए फ़ैमिली एल्गोरिदम के साथ किया गया है, तो डिप्लॉयमेंट काम नहीं करेगा.
|
build |
InvalidValueForElement |
अगर <Algorithm> एलिमेंट में दी गई वैल्यू, इस्तेमाल की जा सकने वाली वैल्यू नहीं है,
तो डिप्लॉयमेंट काम नहीं करेगा.
|
build |
MissingConfigurationElement |
यह गड़बड़ी तब होती है, जब <PrivateKey> एलिमेंट का इस्तेमाल आरएसए फ़ैमिली एल्गोरिदम के साथ न किया गया हो या <SecretKey> एलिमेंट का इस्तेमाल एचएस फ़ैमिली एल्गोरिदम के साथ न किया गया हो.
|
build |
InvalidKeyConfiguration |
अगर <PrivateKey>
या <SecretKey> एलिमेंट में चाइल्ड एलिमेंट <Value> के बारे में नहीं बताया गया है, तो डिप्लॉयमेंट नहीं हो पाएगा.
|
build |
EmptyElementForKeyConfiguration |
अगर <PrivateKey> या <SecretKey> एलिमेंट के चाइल्ड एलिमेंट <Value> का रेफ़रंस एट्रिब्यूट खाली है या इसके बारे में नहीं बताया गया है, तो डिप्लॉयमेंट काम नहीं करेगा.
|
build |
InvalidVariableNameForSecret |
यह गड़बड़ी तब होती है, जब <PrivateKey> या <SecretKey> एलिमेंट के चाइल्ड एलिमेंट <Value> के ref एट्रिब्यूट में दिए गए फ़्लो वैरिएबल के नाम में निजी प्रीफ़िक्स (private.) शामिल न हो.
|
build |
InvalidSecretInConfig |
यह गड़बड़ी तब होती है, जब <PrivateKey>
या <SecretKey> एलिमेंट के चाइल्ड एलिमेंट <Value> में निजी प्रीफ़िक्स (private.) शामिल न हो.
|
build |
InvalidTimeFormat |
अगर <NotBefore> एलिमेंट में दी गई वैल्यू, काम करने वाले फ़ॉर्मैट का इस्तेमाल नहीं करती है, तो डिप्लॉयमेंट काम नहीं करेगा.
|
build |
गड़बड़ी के वैरिएबल
रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
| वैरिएबल | कहां | उदाहरण |
|---|---|---|
fault.name="fault_name" |
fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. | fault.name Matches "TokenExpired" |
JWT.failed |
कोई गड़बड़ी होने पर, JWT की सभी नीतियां एक ही वैरिएबल सेट करती हैं. | JWT.failed = true |
गड़बड़ी के रिस्पॉन्स का उदाहरण
गड़बड़ी ठीक करने के लिए, सबसे सही तरीका यह है कि गड़बड़ी के errorcode वाले हिस्से को छिपाया जाए
जवाब. faultstring में मौजूद टेक्स्ट पर पूरी तरह भरोसा न करें, क्योंकि इससे बदलाव हो सकता है.
गड़बड़ी के नियम का उदाहरण
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWT.failed=true</Condition>
</FaultRule>
</FaultRules>