आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
क्या
JWT पर हस्ताक्षर की पुष्टि किए बिना, JWT डिकोड करता है. यह सबसे ज़्यादा तब काम आता है, जब जब JWT में किए गए दावे की वैल्यू पता होनी चाहिए, तो VerifyJWT नीति वाला कॉन्सर्ट तो JWT के हस्ताक्षर की पुष्टि हो जाएगी.
JWT पर हस्ताक्षर करने के लिए इस्तेमाल किए गए एल्गोरिदम पर ध्यान दिए बिना, JWT डिकोड की नीति काम करती है. ज़्यादा जानकारी के लिए, JWS और JWT की नीतियों के बारे में खास जानकारी देखें.
वीडियो
किसी JWT को डिकोड करने का तरीका जानने के लिए एक छोटा वीडियो देखें.
सैंपल: JWT डिकोड करें
नीचे दिखाई गई नीति, फ़्लो वैरिएबल var.jwt में मिलने वाले JWT को डिकोड करती है. यह वैरिएबल मौजूद होना चाहिए और उसमें एक व्यावहारिक (डिकोडेबल) JWT होना चाहिए. नीति, विज्ञापन आईडी को JWT में का इस्तेमाल किया जा सकता है.
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>var.jwt</Source> </DecodeJWT>
यह नीति अपने आउटपुट को कॉन्टेक्स्ट वैरिएबल में लिखती है, ताकि बाद में लागू होने वाली नीतियां या शर्तें एपीआई प्रॉक्सी में उन वैल्यू की जांच कर सकता है. फ़्लो वैरिएबल की सूची देख सकते हैं.
JWT डिकोड करने के लिए एलिमेंट रेफ़रंस
पॉलिसी रेफ़रंस में, डिकोड करने वाली JWT की नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
ऐसे एट्रिब्यूट जो टॉप-लेवल एलिमेंट पर लागू करें
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
ये एट्रिब्यूट, नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं.
एट्रिब्यूट | जानकारी | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
नाम |
नीति का अंदरूनी नाम. नाम में इस्तेमाल किए जा सकने वाले वर्ण इन तक सीमित हैं:
A-Z0-9._\-$ % . हालांकि, Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) की मदद से
पाबंदियां, जैसे कि अक्षर और अंक के अलावा किसी और वर्ण को अपने-आप हटाना.
विकल्प के तौर पर, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है
व्यवहार की जानकारी देने वाला डेटा.
नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
चालू किया गया |
नीति को लागू करने के लिए, true पर सेट करें.
|
सही | वैकल्पिक |
एक साथ काम नहीं करने वाली प्रोसेस | यह एट्रिब्यूट अब काम नहीं करता. | गलत | बहिष्कृत |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को लेबल करने के लिए, नाम एट्रिब्यूट के अलावा इस्तेमाल करें पर क्लिक करें.
डिफ़ॉल्ट | अगर इस एलिमेंट को छोड़ा जाता है, तो नीति के नाम वाले एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है. |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
<Source>
<Source>jwt-variable</Source>
अगर यह मौजूद है, तो यह उस फ़्लो वैरिएबल को तय करता है जिसमें नीति, JWT को डिकोड करना.
डिफ़ॉल्ट | request.header.authorization (अहम जानकारी के लिए ऊपर दिया गया नोट देखें
डिफ़ॉल्ट के बारे में जानकारी). |
मौजूदगी | वैकल्पिक |
स्ट्रीम किस तरह की है | स्ट्रिंग |
मान्य वैल्यू | एज फ़्लो वैरिएबल का नाम |
फ़्लो वैरिएबल
कामयाब होने पर, Verify JWT और Decode JWT की नीतियां सेट हो जाती हैं इस पैटर्न के अनुसार कॉन्टेक्स्ट वैरिएबल:
jwt.{policy_name}.{variable_name}
उदाहरण के लिए, अगर नीति का नाम jwt-parse-token
है , तो नीति सेव हो जाएगी
JWT में, jwt.jwt-parse-token.decoded.claim.sub
नाम के कॉन्टेक्स्ट वैरिएबल में विषय के बारे में बताया गया है.
(पुराने सिस्टम के साथ काम करने की सुविधा के लिए, यह jwt.jwt-parse-token.claim.subject
में भी उपलब्ध होगी)
वैरिएबल का नाम | ब्यौरा |
---|---|
claim.audience |
JWT ऑडियंस का दावा. यह वैल्यू, कोई स्ट्रिंग या स्ट्रिंग का कलेक्शन हो सकता है. |
claim.expiry |
समयसीमा खत्म होने की तारीख/समय, जिसे Epoch के बाद मिलीसेकंड में दिखाया जाता है. |
claim.issuedat |
टोकन जारी किए जाने की तारीख, जो epoch के बाद मिलीसेकंड में बताई जाती है. |
claim.issuer |
JWT जारी करने वाली कंपनी का दावा. |
claim.notbefore |
अगर JWT में एक एनबीएफ़ दावा शामिल है, तो इस वैरिएबल में वैल्यू होगी, Epoch के बाद से मिलीसेकंड में व्यक्त किया जाता है. |
claim.subject |
JWT के विषय से जुड़ा दावा. |
claim.name |
पेलोड में नाम वाले दावे (स्टैंडर्ड या अतिरिक्त) की वैल्यू. इनमें से किसी एक को हर दावे को सुरक्षित रखें. |
decoded.claim.name |
पेलोड में, नाम वाले दावे का JSON-पार्स करने लायक मान (स्टैंडर्ड या अतिरिक्त). इसके लिए एक वैरिएबल सेट किया गया है
हर दावे को सुरक्षित रखें. उदाहरण के लिए, decoded.claim.iat का इस्तेमाल इन कामों के लिए किया जा सकता है
JWT के जारी किए गए समय को फिर से प्राप्त किया जाता है, जिसे Epoch के बाद सेकंड में दिखाया जाता है. हालांकि,
claim.name फ़्लो वैरिएबल का भी इस्तेमाल कर सकते हैं, जो
दावे को ऐक्सेस करने के लिए, सुझाया गया वैरिएबल. |
decoded.header.name |
पेलोड में हेडर का JSON-पार्स करने लायक मान. इसके लिए एक वैरिएबल सेट किया गया है
हर हेडर को कॉपी करता है. हालांकि, आपके पास header.name फ़्लो वैरिएबल का इस्तेमाल करने का भी विकल्प है,
हेडर को ऐक्सेस करने के लिए, इस वैरिएबल का इस्तेमाल करने का सुझाव दिया जाता है. |
expiry_formatted |
ऐक्सेस खत्म होने की तारीख/समय, इस स्ट्रिंग का फ़ॉर्मैट ऐसा होता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. उदाहरणः 2017-09-28T21:30:45.000+0000 |
header.algorithm |
JWT पर इस्तेमाल किया जाने वाला साइनिंग एल्गोरिदम. उदाहरण के लिए, RS256, HS384 वगैरह. ज़्यादा जानकारी के लिए (Algorithm) हेडर पैरामीटर देखें. |
header.kid |
कुंजी आईडी, अगर उसे JWT जनरेट करते समय जोड़ा जाता है. "JSON वेब कुंजी सेट का इस्तेमाल करना" भी देखें (JWKS)" JWT पर नीतियों की खास जानकारी का इस्तेमाल करें. ज़्यादा जानकारी के लिए (Key ID) हेडर पैरामीटर देखें. |
header.type |
JWT पर सेट होगा. |
header.name |
नाम वाले हेडर की वैल्यू (स्टैंडर्ड या अतिरिक्त). इनमें से किसी एक को JWT के हेडर वाले हिस्से में हर अतिरिक्त हेडर. |
header-json |
JSON फ़ॉर्मैट में हेडर. |
is_expired |
सही या गलत |
payload-claim-names |
JWT के साथ काम करने वाले दावों का कलेक्शन. |
payload-json |
JSON फ़ॉर्मैट में पेलोड.
|
seconds_remaining |
टोकन की समय-सीमा खत्म होने से पहले सेकंड की संख्या. अगर टोकन की समयसीमा खत्म हो जाती है, तो संख्या ऋणात्मक होगी. |
time_remaining_formatted |
टोकन की समयसीमा खत्म होने से पहले, बचा हुआ समय. इस फ़ॉर्मैट को ऐसे स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. उदाहरण: 00:59:59.926 |
valid |
VerifyJWT के मामले में, हस्ताक्षर की पुष्टि होने पर यह वैरिएबल सही होगा. साथ ही,
मौजूदा समय, टोकन की समयसीमा खत्म होने से पहले का है. साथ ही, टोकन के बाद, अगर वे
मौजूद हैं. नहीं तो गलत.
DecodeJWT के मामले में, यह वैरिएबल सेट नहीं होता. |
गड़बड़ी का रेफ़रंस
यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | वजह | समाधान |
---|---|---|---|
steps.jwt.FailedToDecode |
401 | ऐसा तब होता है, जब नीति, JWT को डिकोड नहीं कर पाती. JWT गलत हो सकता है, अमान्य हो सकता है या इसे डिकोड नहीं किया जा सकता. | build |
steps.jwt.FailedToResolveVariable |
401 | ऐसा तब होता है, जब नीति के <Source> एलिमेंट में बताया गया फ़्लो वैरिएबल
मौजूद न हो. |
|
steps.jwt.InvalidToken |
401 | ऐसा तब होता है, जब नीति के <Source> एलिमेंट में दिया गया फ़्लो वैरिएबल
दायरे से बाहर हो या उसे हल नहीं किया जा सकता हो. |
build |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | वजह | समाधान |
---|---|---|
InvalidEmptyElement |
ऐसा तब होता है, जब डिकोड किए जाने वाले JWT वाले फ़्लो वैरिएबल को
नीति के <Source> एलिमेंट में न बताया गया हो.
|
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>