คุณกําลังดูเอกสารประกอบของ 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 Proxy ที่ทำให้เกิดข้อผิดพลาด อาจมีนโยบาย 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 ไม่ใช่สตริงที่เข้ารหัส 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 Proxy ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด อาจมีนโยบาย 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 Proxy ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด อาจมีนโยบาย 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>
หากตัวแปรเป็นส่วนหัวและมีรูปแบบไม่ถูกต้องหรือไม่ถูกต้อง เช่น ไม่มีประเภทการตรวจสอบสิทธิ์ หรือประเภทการตรวจสอบสิทธิ์ไม่ใช่ "พื้นฐาน" แสดงว่านี่คือสาเหตุของข้อผิดพลาด
ส่วนหัวการให้สิทธิ์อยู่ในรูปแบบนี้
Authorization: <Authentication type> <credentials>
ส่วนหัวที่มีรูปแบบไม่ถูกต้องสามารถส่งไปยังนโยบาย BasicAuthentication ได้ 2 วิธี ดังนี้
ตัวอย่างที่ 1: ไม่มีประเภทการตรวจสอบสิทธิ์ในส่วนหัว
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
ในตัวอย่างข้างต้น ส่วนหัวการให้สิทธิ์ไม่มีประเภทการตรวจสอบสิทธิ์ หากส่งส่วนหัวนี้ไปยังนโยบาย BasicAuthentication ที่แสดงด้านบน คุณจะได้รับรหัสข้อผิดพลาดต่อไปนี้
steps.basicauthentication.InvalidBasicAuthenticationSource
ตัวอย่างที่ 2: ประเภทการตรวจสอบสิทธิ์ไม่ใช่ประเภท "พื้นฐาน"
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
ในตัวอย่างข้างต้น ส่วนหัวการให้สิทธิ์ไม่มีประเภทการตรวจสอบสิทธิ์เป็น "พื้นฐาน" หากส่งค่านี้ไปยังนโยบาย BasicAuthentication ที่แสดงด้านบน คุณจะได้รับรหัสข้อผิดพลาดต่อไปนี้
steps.basicauthentication.InvalidBasicAuthenticationSource
ในทํานองเดียวกัน ข้อผิดพลาดนี้อาจเกิดขึ้นได้หากมีการใช้ประเภทการตรวจสอบสิทธิ์ เช่น Bearer, Digest Auth ฯลฯ ในส่วนหัวการให้สิทธิ์
ความละเอียด
ตรวจสอบว่าส่วนหัวที่ส่งอินพุตไปยังนโยบาย BasicAuthentication เป็นประเภทการตรวจสอบสิทธิ์และเป็นประเภท "พื้นฐาน"
หากต้องการแก้ไขปัญหาเกี่ยวกับนโยบาย BasicAuthentication ตัวอย่างที่กล่าวถึงข้างต้น ให้ส่งคําขอ API โดยส่งสตริงที่เข้ารหัส Base64 ที่ถูกต้องซึ่งมีประเภทการตรวจสอบสิทธิ์ "พื้นฐาน" ในส่วนหัวการให้สิทธิ์ ดังที่แสดงด้านล่าง
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"