DecodeJWT नीति

आपको 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 मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) की मदद से पाबंदियां, जैसे कि अक्षर और अंक के अलावा किसी और वर्ण को अपने-आप हटाना.

विकल्प के तौर पर, <displayname></displayname> एलिमेंट का इस्तेमाल करके मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में, नीति को अलग और आम भाषा में लेबल करें नाम.

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

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

गलत वैकल्पिक
चालू किया गया नीति को लागू करने के लिए, true पर सेट करें.

false को "बंद करें" पर सेट करें नीति के बारे में ज़्यादा जानें. नीति लागू नहीं की जाएगी भले ही वह किसी फ़्लो से जुड़ा हुआ हो.

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

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

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

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

&lt;Source&gt;

<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 गलत हो सकता है, अमान्य हो सकता है या इसे डिकोड नहीं किया जा सकता.
steps.jwt.FailedToResolveVariable 401 ऐसा तब होता है, जब नीति के <Source> एलिमेंट में बताया गया फ़्लो वैरिएबल मौजूद न हो.
steps.jwt.InvalidToken 401 ऐसा तब होता है, जब नीति के <Source> एलिमेंट में दिया गया फ़्लो वैरिएबल दायरे से बाहर हो या उसे हल नहीं किया जा सकता हो.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह समाधान
InvalidEmptyElement ऐसा तब होता है, जब डिकोड किए जाने वाले JWT वाले फ़्लो वैरिएबल को नीति के <Source> एलिमेंट में न बताया गया हो.

गड़बड़ी के वैरिएबल

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

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "TokenExpired"
JWT.failed कोई गड़बड़ी होने पर, JWT की सभी नीतियां एक ही वैरिएबल सेट करती हैं. JWT.failed = true

गड़बड़ी के रिस्पॉन्स का उदाहरण

JWT नीति फ़ॉल्ट कोड

गड़बड़ी ठीक करने के लिए, सबसे सही तरीका यह है कि गड़बड़ी के 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>