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