คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
FailedToDecode
รหัสข้อผิดพลาด
steps.jwt.FailedToDecode
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to Decode Token: policy({0})",
"detail": {
"errorcode": "steps.jwt.FailedToDecode"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหาก JSON Web Token (JWT) ที่ระบุในองค์ประกอบ <Source> ของนโยบายการถอดรหัส JWT มีรูปแบบไม่ถูกต้อง ไม่ถูกต้อง หรือถอดรหัสไม่ได้
JWT ที่มีโครงสร้างอย่างถูกต้องควรมีส่วนหัว เพย์โหลด และลายเซ็นในรูปแบบต่อไปนี้ header.payload.signature หาก JWT ที่ส่งไปยังนโยบาย DecodeJWT ไม่มีส่วนประกอบ คุณจะได้รับข้อผิดพลาด เช่น หาก JWT มีเฉพาะ payload.signature แต่ไม่มี header ข้อผิดพลาดจะเกิดขึ้น
การวินิจฉัย
ระบุตัวแปรที่ระบุไว้ในองค์ประกอบ
<Source>ของนโยบายการถอดรหัส JWT ตัวแปรนี้ควรมี JWTต่อไปนี้คือตัวอย่างนโยบายการถอดรหัส JWT
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>ในตัวอย่างข้างต้น JWT ควรอยู่ในส่วนหัวของคำขอการให้สิทธิ์
ตรวจสอบตัวแปรที่ระบุในขั้นตอนที่ 1 และดูว่า JWT ที่มีนั้นถูกต้องหรือไม่ หาก JWT ที่ป้อนไม่ถูกต้อง นั่นคือสาเหตุของข้อผิดพลาด
ในคำขอ API ตัวอย่างด้านล่าง ระบบจะส่ง JWT อินพุตในส่วนหัวของคำขอการให้สิทธิ์
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
การตรวจสอบ JWT อย่างละเอียดแสดงให้เห็นว่ามีรูปแบบ
payload.signatureซึ่งไม่ถูกต้อง รูปแบบที่ควรจะเป็นของ JWT คือheader.payload.signatureด้วยเหตุนี้ นโยบาย Decode JWT จึงล้มเหลวพร้อมข้อผิดพลาดต่อไปนี้"faultstring": "Failed to Decode Token: policy({0})"
ความละเอียด
ตรวจสอบว่า JWT ที่ส่งไปยังนโยบายถอดรหัส JWT มีองค์ประกอบทั้ง 3 อย่าง มีการจัดรูปแบบอย่างถูกต้อง และถอดรหัสได้
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถส่ง JWT ที่ถูกต้องในรูปแบบ header.payload.signature ซึ่งทำได้โดยการเรียก API โดยใช้คำสั่ง 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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากตัวแปรโฟลว์ที่ระบุในองค์ประกอบ <Source> ของนโยบายถอดรหัส JWT มีลักษณะดังนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
การวินิจฉัย
ระบุตัวแปรที่ระบุไว้ในองค์ประกอบ
<Source>ของนโยบายการถอดรหัส JWT ตัวแปรนี้ควรมี JWTต่อไปนี้คือตัวอย่างนโยบายการถอดรหัส JWT
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>ในตัวอย่างข้างต้น ส่วนหัวของคำขอการให้สิทธิ์ควรมี JWT
ตรวจสอบว่าตัวแปรที่ระบุในขั้นตอนที่ 1 ได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่นโยบายถอดรหัส JWT ดำเนินการหรือไม่
หากตัวแปรเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ในคำขอ API ตัวอย่างด้านล่าง ผู้ใช้ไม่ได้ส่ง JWT ในส่วนหัวของคำขอการให้สิทธิ์
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT"
เนื่องจากไม่ได้ส่งส่วนหัวของคำขอการให้สิทธิ์ นโยบายการถอดรหัส JWT จึงไม่สำเร็จและแสดงข้อผิดพลาดต่อไปนี้
"faultstring": "Invalid token: policy({0})"
ความละเอียด
ตรวจสอบว่าได้กำหนดตัวแปรที่อ้างอิงในองค์ประกอบ <Source> ของนโยบายการถอดรหัส JWT แล้ว โดยตัวแปรดังกล่าวต้องมี JWT ที่ถูกต้อง (ถอดรหัสได้) และพร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการดำเนินการนโยบายการถอดรหัส JWT
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถส่ง JWT ที่ถูกต้องในส่วนหัวการให้สิทธิ์คำขอได้ ซึ่งทำได้โดยการเรียก API โดยใช้คำสั่ง cURL ดังนี้
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"