आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
FailedToDecode
गड़बड़ी का कोड
steps.jwt.FailedToDecode
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Failed to Decode Token: policy({0})",
"detail": {
"errorcode": "steps.jwt.FailedToDecode"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब डिकोड जेडब्लयूटी नीति के <Source>
एलिमेंट में दिया गया JSON वेब टोकन (JWT) गलत हो, अमान्य हो या डिकोड न किया जा सके.
सही तरीके से स्ट्रक्चर किए गए JWT में हेडर, पेलोड, और हस्ताक्षर इस फ़ॉर्मैट में होने चाहिए: header.payload.signature
. अगर DecodeJWT नीति को पास किया गया JWT में कॉम्पोनेंट का कोई हिस्सा मौजूद नहीं है, तो आपको गड़बड़ी मिलेगी. उदाहरण के लिए, अगर JWT में सिर्फ़ payload.signature
है, लेकिन header
मौजूद नहीं है, तो गड़बड़ी होगी.
संक्रमण की जांच
डीकोड JWT नीति के
<Source>
एलिमेंट में तय किए गए वैरिएबल की पहचान करें. इस वैरिएबल में JWT होना चाहिए.यहां डिकोड की JWT नीति का सैंपल दिया गया है:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
ऊपर दिए गए उदाहरण में, JWT को अनुमति देने के अनुरोध के हेडर में शामिल किया जाना चाहिए.
पहले चरण में पहचाने गए वैरिएबल की जांच करें और देखें कि इसमें शामिल JWT मान्य है या नहीं. अगर इनपुट JWT मान्य नहीं है, तो यह गड़बड़ी की वजह है.
नीचे दिए गए एपीआई अनुरोध के उदाहरण में, इनपुट JWT को अनुमति देने के अनुरोध के हेडर में पास किया गया है:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
JWT की अच्छी तरह से जांच करने पर पता चलता है कि इसका फ़ॉर्मैट
payload.signature
है जो अमान्य है. JWT का अनुमानित फ़ॉर्मैटheader.payload.signature
है. इस वजह से, डिकोड की गई JWT नीति इस गड़बड़ी के साथ काम नहीं करती :"faultstring": "Failed to Decode Token: policy({0})"
रिज़ॉल्यूशन
पक्का करें कि डिकोड JWT नीति को पास किए गए JWT में सभी तीनों एलिमेंट शामिल हैं, सही तरीके से फ़ॉर्मैट किया गया है और डिकोड किया जा सकता है.
ऊपर दिया गया उदाहरण सही करने के लिए, header.payload.signature
फ़ॉर्मैट में मान्य JWT पास किया जा सकता है. ऐसा करने के लिए, cURL निर्देश का इस्तेमाल करके, इस तरह से एपीआई कॉल किया जा सकता है:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
InvalidToken
गड़बड़ी का कोड
steps.jwt.InvalidToken
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Invalid token: policy({0})",
"detail": {
"errorcode": "steps.jwt.InvalidToken"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब डिकोड JWT नीति के <Source>
एलिमेंट में दिया गया फ़्लो वैरिएबल यह होता है:
- दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- हल नहीं किया जा सकता (तय नहीं है)
संक्रमण की जांच
डीकोड JWT नीति के
<Source>
एलिमेंट में तय किए गए वैरिएबल की पहचान करें. इस वैरिएबल में JWT होना चाहिए.यहां डिकोड की JWT नीति का सैंपल दिया गया है:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
ऊपर दिए गए उदाहरण में, अनुमति देने के अनुरोध के हेडर में JWT होना चाहिए.
यह देखें कि पहले चरण में जिस वैरिएबल की पहचान की गई थी वह तय किए गए है और उस फ़्लो में उपलब्ध है जिसमें डिकोड जेडब्लयूटी नीति लागू की गई है.
अगर वैरिएबल इनमें से कोई एक है:
- दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- हल नहीं किया जा सकता (तय नहीं है)
तो यह गड़बड़ी की वजह है.
नीचे दिए गए एपीआई अनुरोध के उदाहरण में, उपयोगकर्ता ने अनुमति देने के अनुरोध के हेडर में JWT को पास नहीं किया है.
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT"
अनुमति देने का अनुरोध हेडर पास नहीं होने की वजह से, इस गड़बड़ी के साथ डिकोड करने वाली JWT नीति काम नहीं करती:
"faultstring": "Invalid token: policy({0})"
रिज़ॉल्यूशन
पक्का करें कि डिकोड JWT नीति के <Source>
एलिमेंट में रेफ़र किया गया वैरिएबल, एक मान्य (डिकोडेबल) JWT है. साथ ही, यह उस खास फ़्लो में उपलब्ध होता है जिसमें डिकोड की गई JWT नीति लागू की जा रही है.
ऊपर दिया गया उदाहरण सही करने के लिए, अनुरोध की अनुमति देने के हेडर में एक मान्य JWT पास करें. ऐसा करने के लिए, cURL निर्देश का इस्तेमाल करके, इस तरह से एपीआई कॉल किया जा सकता है:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"