คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
UnresolvedVariable
รหัสข้อผิดพลาด
steps.basicauthentication.UnresolvedVariable
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่มีสตริงที่เข้ารหัส Base64 ที่ระบุในองค์ประกอบ <Source>
ของนโยบาย BasicAuthentication เป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงที่กำลังบังคับใช้นโยบาย)
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย BasicAuthentication มีตัวแปรที่ระบุเป็น request.header.Authorization
ในองค์ประกอบ <Source>
แต่ไม่มีการส่งส่วนหัวการให้สิทธิ์ที่เป็นส่วนหนึ่งของคำขอ API
การวินิจฉัย
ระบุตัวแปรที่ใช้สำหรับองค์ประกอบ
<Source>
ในนโยบาย BasicAuthentication คุณดูข้อมูลนี้ได้ในองค์ประกอบfaultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring,
ต่อไปนี้ ตัวแปรที่ใช้กับองค์ประกอบ<Source>
คือrequest.header.Authorization
"faultstring": "Unresolved variable : request.header.Authorization"
ตรวจสอบนโยบาย BasicAuthentication ทั้งหมดในพร็อกซี API เฉพาะที่เกิดความล้มเหลวขึ้น อาจมีนโยบาย BasicAuthentication อย่างน้อย 1 รายการ ระบุนโยบาย BasicAuthentication หรือนโยบายที่ตัวแปรที่ระบุในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าองค์ประกอบ
<Source>
เป็นตัวแปรที่ชื่อrequest.header.Authorization
ซึ่งตรงกับสิ่งที่อยู่ในfaultstring
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
ตรวจสอบว่าตัวแปรได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่มีการบังคับใช้นโยบาย BasicAuthentication หรือไม่
หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงที่กำลังบังคับใช้นโยบาย)
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบาย BasicAuthentication ที่แสดงด้านบน ระบบจะไม่ส่งตัวแปร
request.header.Authorization
เป็นส่วนหนึ่งของคำขอ กล่าวคือ คำขอ API สร้างขึ้นโดยไม่มีส่วนหัวการให้สิทธิ์ดังที่แสดงด้านล่างcurl -v "http://org-env.apigee.net/basicauth"
เนื่องจากตัวแปรที่ใช้ในนโยบาย BasicAuthentication ไม่พร้อมใช้งาน คุณจะได้รับรหัสข้อผิดพลาดดังนี้
steps.basicauthentication.UnresolvedVariable
ความละเอียด
ตรวจสอบว่าได้กำหนดหรือส่งตัวแปรที่ใช้ในนโยบาย BasicAuthentication เป็นอินพุตและใช้ได้ในโฟลว์ที่จะมีการบังคับใช้นโยบาย
ในการแก้ปัญหาเกี่ยวกับตัวอย่างนโยบาย BasicAuthentication ที่กล่าวถึงข้างต้น ให้ส่งคำขอ API ตามที่แสดงด้านล่าง
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
รหัสข้อผิดพลาด
steps.basicauthentication.InvalidBasicAuthenticationSource
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
สาเหตุที่เป็นไปได้
สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้คือ
สาเหตุ | คำอธิบาย |
---|---|
ตัวแปรแหล่งที่มาไม่ถูกต้อง | ตัวแปรแหล่งที่มาของอินพุตของ BasicAuthentication Policy ไม่ใช่สตริงที่เข้ารหัส Base64 ที่ถูกต้อง |
ส่วนหัวมีรูปแบบไม่ถูกต้อง | ส่วนหัวที่มีสตริงที่เข้ารหัส Base64 ที่ส่งไปยังนโยบาย BasicAuthentication มีรูปแบบไม่ถูกต้อง |
สาเหตุ: ตัวแปรแหล่งที่มาไม่ถูกต้อง
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่มีสตริงที่เข้ารหัส Base64 ที่ระบุในองค์ประกอบ <Source>
ของนโยบาย BasicAuthentication ไม่มีค่าที่ถูกต้อง
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากตัวแปรที่ระบุในองค์ประกอบ <Source>
ของนโยบาย BasicAuthentication ไม่มีสตริงที่เข้ารหัส Base64 ที่ถูกต้อง
การวินิจฉัย
ระบุตัวแปรที่ใช้สำหรับองค์ประกอบ
<Source>
ในนโยบาย BasicAuthentication คุณดูข้อมูลนี้ได้ในองค์ประกอบfaultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring,
ต่อไปนี้ ตัวแปรที่ใช้กับองค์ประกอบ<Source>
คือrequest.header.Authorization
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
ตรวจสอบนโยบาย BasicAuthentication ทั้งหมดในพร็อกซี API เฉพาะที่เกิดความล้มเหลวขึ้น อาจมีนโยบาย BasicAuthentication อย่างน้อย 1 รายการ ระบุนโยบาย BasicAuthentication (ies) เฉพาะที่ตัวแปรที่ระบุในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าองค์ประกอบ
<Source>
เป็นตัวแปรที่ชื่อrequest.header.Authorization
ซึ่งตรงกับสิ่งที่อยู่ในfaultstring
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
หากค่าที่จัดเก็บไว้ในตัวแปรที่ระบุในองค์ประกอบ
<Source>
ไม่ใช่สตริงที่เข้ารหัส Base64 ที่ถูกต้องนี่คือสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบาย BasicAuthentication ที่แสดงด้านบน ตัวแปร
request.header.Authorization
ที่ไคลเอ็นต์ส่งมาเป็นส่วนหัวไม่ถูกต้องตามที่แสดงด้านล่างcurl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
เนื่องจากตัวแปร
request.header.Authorization
มีสตริงที่เข้ารหัส Base64 ที่ไม่ถูกต้อง "23435"
คุณจะได้รับรหัสข้อผิดพลาด:steps.basicauthentication.InvalidBasicAuthenticationSource
ความละเอียด
ตรวจสอบว่าตัวแปรที่ระบุสำหรับองค์ประกอบ <Source>
ในนโยบาย BasicAuthentication มีสตริงที่เข้ารหัส Base64 ที่ถูกต้อง
หากต้องการแก้ไขปัญหากับตัวอย่างนโยบาย BasicAuthentication ที่กล่าวถึงข้างต้น ให้ส่งคำขอ API โดยการส่งสตริงที่เข้ารหัส Base64 ที่ถูกต้องในส่วนหัวการให้สิทธิ์ดังที่แสดงด้านล่าง
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
สาเหตุ: ส่วนหัวผิดรูปแบบ/ไม่ถูกต้อง
ข้อผิดพลาดนี้เกิดขึ้นหากส่วนหัวที่ส่งไปยังนโยบาย BasicAuthentication ผิดรูปแบบหรือไม่ถูกต้อง
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย BasicAuthentication มีตัวแปรที่ระบุเป็น request.header.Authorization
ในองค์ประกอบ <Source>
และส่วนหัวที่ส่งผ่านเป็นส่วนหนึ่งของคำขอ API มีรูปแบบ/ไม่ถูกต้อง
การวินิจฉัย
ระบุตัวแปรที่ใช้สำหรับองค์ประกอบ
<Source>
ในนโยบาย BasicAuthentication คุณดูข้อมูลนี้ได้ในองค์ประกอบfaultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ตัวแปรที่ใช้สำหรับองค์ประกอบ<Source>
คือrequest.header.Authorization
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
ตรวจสอบนโยบาย BasicAuthentication ทั้งหมดในพร็อกซี API เฉพาะที่เกิดความล้มเหลวขึ้น อาจมีนโยบาย BasicAuthentication อย่างน้อย 1 รายการ ระบุนโยบาย BasicAuthentication (ies) เฉพาะที่ตัวแปรที่ระบุในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าองค์ประกอบ
<Source>
เป็นตัวแปรที่ชื่อrequest.header.Authorization
ซึ่งตรงกับสิ่งที่อยู่ในfaultstring
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
หากตัวแปรเป็นส่วนหัวและมีรูปแบบไม่ถูกต้องหรือไม่ถูกต้อง กล่าวคือ ไม่มีประเภทการตรวจสอบสิทธิ์ หรือหากประเภทการตรวจสอบสิทธิ์ไม่ใช่ "พื้นฐาน" นั่นก็คือสาเหตุของข้อผิดพลาด
ส่วนหัวการให้สิทธิ์จะอยู่ในรูปแบบนี้:
Authorization: <Authentication type> <credentials>
คุณส่งส่วนหัวที่มีรูปแบบไม่ถูกต้องไปยังนโยบาย BasicAuthentication ได้ 2 วิธี ดังนี้
ตัวอย่างที่ 1: ไม่มีประเภทการตรวจสอบสิทธิ์ในส่วนหัว:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
ในตัวอย่างข้างต้น ส่วนหัว Authorization ไม่มีประเภทการตรวจสอบสิทธิ์ หากระบบส่งส่วนหัวนี้ไปยังนโยบาย BasicAuthentication ที่แสดงด้านบน คุณจะได้รับรหัสข้อผิดพลาด ดังนี้
steps.basicauthentication.InvalidBasicAuthenticationSource
ตัวอย่างที่ 2: ประเภทการตรวจสอบสิทธิ์ไม่ใช่ประเภท "พื้นฐาน"
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
ในตัวอย่างข้างต้น ส่วนหัวการให้สิทธิ์ไม่มีประเภทการตรวจสอบสิทธิ์เป็น "พื้นฐาน" หากส่งต่อค่าไปยังนโยบาย BasicAuthentication ดังที่แสดงด้านบน คุณจะได้รับรหัสข้อผิดพลาด ดังนี้
steps.basicauthentication.InvalidBasicAuthenticationSource
เช่นเดียวกัน ข้อผิดพลาดนี้อาจเกิดขึ้นหากใช้ประเภทการตรวจสอบสิทธิ์ เช่น ผู้ถือ การตรวจสอบสิทธิ์ไดเจสต์ ฯลฯ ในส่วนหัวการให้สิทธิ์
ความละเอียด
ตรวจสอบว่าส่วนหัวที่ส่งอินพุตไปยังนโยบาย BasicAuthentication เป็นประเภทการตรวจสอบสิทธิ์และเป็นประเภท "พื้นฐาน"
หากต้องการแก้ปัญหากับตัวอย่างนโยบาย BasicAuthentication ที่อธิบายข้างต้น ให้ส่งคำขอ API โดยการส่งสตริงที่เข้ารหัส Base64 ที่ถูกต้องด้วย "Basic" ประเภทการตรวจสอบสิทธิ์ในส่วนหัวการให้สิทธิ์ดังที่แสดงด้านล่าง
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"