Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
UnresolvedVariable
Mã lỗi
steps.basicauthentication.UnresolvedVariable
Nội dung phản hồi về lỗi
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Ví dụ về thông báo lỗi
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu biến chứa chuỗi được mã hoá Base64 được chỉ định trong <Source>
phần tử của chính sách BasicAuthentication là:
- Ngoài phạm vi (không áp dụng trong quy trình cụ thể mà chính sách đang được thực thi)
- Không thể giải quyết (không xác định)
Chẳng hạn, lỗi này xảy ra nếu chính sách BasicAuthentication có một biến được chỉ định là request.header.Authorization
trong phần tử <Source>
, nhưng tiêu đề Uỷ quyền không được chuyển trong yêu cầu API.
Chẩn đoán
Xác định biến dùng cho phần tử
<Source>
trong chính sách BasicAuthentication. Bạn có thể tìm thấy thông tin này trong phần tửfaultstring
của phản hồi lỗi. Ví dụ: trongfaultstring,
sau đây, biến được dùng cho phần tử<Source>
làrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Kiểm tra tất cả các chính sách BasicAuthentication trong Proxy API cụ thể nơi xảy ra lỗi. Có thể có một hoặc nhiều chính sách BasicAuthentication. Xác định chính sách BasicAuthentication hoặc các chính sách cụ thể mà trong đó biến được chỉ định trong phần tử
<Source>
khớp với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên).Ví dụ: chính sách sau đây đặt phần tử
<Source>
thành biến có tênrequest.header.Authorization
, khớp với nội dung trongfaultstring
:<?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>
Xác định xem biến đã được xác định và có sẵn trong luồng mà chính sách BasicAuthentication đang được thực thi hay không.
Nếu biến là:
- Ngoài phạm vi (không áp dụng trong quy trình cụ thể mà chính sách đang được thực thi)
- Không thể giải quyết (không xác định)
Tiếp đó, đó là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách BasicAuthentication ở trên, biến
request.header.Authorization
không được chuyển vào yêu cầu. Tức là yêu cầu API được thực hiện mà không có tiêu đề Uỷ quyền như minh hoạ dưới đây:curl -v "http://org-env.apigee.net/basicauth"
Vì biến được dùng trong chính sách BasicAuthentication không hoạt động, nên bạn sẽ nhận được mã lỗi:
steps.basicauthentication.UnresolvedVariable
Độ phân giải
Đảm bảo rằng biến được dùng trong chính sách BasicAuthentication được xác định hoặc chuyển dưới dạng dữ liệu đầu vào và có sẵn trong luồng khi chính sách đang được thực thi.
Để khắc phục vấn đề về chính sách BasicAuthentication mẫu được thảo luận ở trên, hãy gửi yêu cầu API như bên dưới:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
Mã lỗi
steps.basicauthentication.InvalidBasicAuthenticationSource
Nội dung phản hồi về lỗi
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Ví dụ về thông báo lỗi
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Các nguyên nhân có thể
Nguyên nhân có thể gây ra lỗi này là:
Nguyên nhân | Mô tả |
---|---|
Biến nguồn không hợp lệ | Biến nguồn đầu vào cho BasicAuthentication Policy không phải là một chuỗi được mã hoá Base64 hợp lệ. |
Tiêu đề không đúng định dạng | Tiêu đề chứa chuỗi được mã hoá Base64 được chuyển đến chính sách BasicAuthentication không đúng định dạng. |
Nguyên nhân: Biến nguồn không hợp lệ
Lỗi này xảy ra nếu biến chứa chuỗi được mã hoá Base64 được chỉ định trong phần tử <Source>
của chính sách BasicAuthentication không chứa giá trị hợp lệ.
Ví dụ: lỗi này xảy ra khi biến được chỉ định trong phần tử <Source>
của chính sách BasicAuthentication không có chuỗi mã hoá Base64 hợp lệ.
Chẩn đoán
Xác định biến dùng cho phần tử
<Source>
trong chính sách BasicAuthentication. Bạn có thể tìm thấy thông tin này trong phần tửfaultstring
của phản hồi lỗi. Ví dụ: trongfaultstring,
sau đây, biến được dùng cho phần tử<Source>
làrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Kiểm tra tất cả các chính sách BasicAuthentication trong Proxy API cụ thể nơi xảy ra lỗi. Có thể có một hoặc nhiều chính sách BasicAuthentication. Xác định (các) chính sách BasicAuthentication cụ thể, trong đó biến được chỉ định trong phần tử
<Source>
khớp với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên).Ví dụ: chính sách sau đây đặt phần tử
<Source>
thành biến có tênrequest.header.Authorization
, khớp với nội dung trongfaultstring
:<?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>
Nếu giá trị lưu trữ trong biến được chỉ định trong phần tử
<Source>
không phải là một chuỗi được mã hoá Base64 hợp lệ, thìđó là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách BasicAuthentication ở trên, biến
request.header.Authorization
do ứng dụng gửi dưới dạng tiêu đề không hợp lệ như được hiển thị dưới đây:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
Vì biến
request.header.Authorization
có chuỗi mã hoá Base64 không hợp lệ "23435"
", nên bạn sẽ nhận được mã lỗi:steps.basicauthentication.InvalidBasicAuthenticationSource
Độ phân giải
Đảm bảo rằng biến được chỉ định cho phần tử <Source>
trong chính sách BasicAuthentication có một chuỗi được mã hoá Base64 hợp lệ.
Để khắc phục vấn đề với chính sách BasicAuthentication mẫu được thảo luận ở trên, hãy gửi yêu cầu API bằng cách chuyển chuỗi được mã hoá Base64 hợp lệ trong tiêu đề Uỷ quyền như minh hoạ dưới đây:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Nguyên nhân: Tiêu đề không đúng định dạng/không hợp lệ
Lỗi này xảy ra nếu tiêu đề được chuyển đến chính sách BasicAuthentication không đúng định dạng hoặc không hợp lệ.
Ví dụ: lỗi này xảy ra nếu chính sách BasicAuthentication có một biến được chỉ định là request.header.Authorization
trong phần tử <Source>
và tiêu đề được truyền trong yêu cầu API không đúng định dạng/không hợp lệ.
Chẩn đoán
Xác định biến dùng cho phần tử
<Source>
trong chính sách BasicAuthentication. Bạn có thể tìm thấy thông tin này trong phần tửfaultstring
của phản hồi lỗi. Ví dụ: trong lỗi sau, biến dùng cho phần tử<Source>
làrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Kiểm tra tất cả các chính sách BasicAuthentication trong Proxy API cụ thể nơi xảy ra lỗi. Có thể có một hoặc nhiều chính sách BasicAuthentication. Xác định (các) chính sách BasicAuthentication cụ thể, trong đó biến được chỉ định trong phần tử
<Source>
khớp với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên).Ví dụ: chính sách sau đây đặt phần tử
<Source>
thành biến có tênrequest.header.Authorization
, khớp với nội dung trongfaultstring
:<?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>
Nếu biến là một tiêu đề và không đúng định dạng hoặc không hợp lệ, tức là biến không có loại xác thực hoặc nếu loại xác thực không phải là "Cơ bản", thì đó là nguyên nhân gây ra lỗi.
Tiêu đề Uỷ quyền có trong biểu mẫu sau:
Authorization: <Authentication type> <credentials>
Bạn có thể chuyển tiêu đề không đúng định dạng đến chính sách BasicAuthentication theo hai cách:
Ví dụ 1: Không có loại xác thực nào trong Tiêu đề:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
Trong ví dụ trên, tiêu đề Uỷ quyền không có loại Xác thực. Nếu tiêu đề này được chuyển đến chính sách BasicAuthentication như sau, bạn sẽ nhận được mã lỗi:
steps.basicauthentication.InvalidBasicAuthenticationSource
Ví dụ 2: Loại xác thực không thuộc loại "Cơ bản":
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Trong ví dụ trên, tiêu đề Uỷ quyền không có loại Xác thực là "Cơ bản". Nếu mã này được chuyển đến chính sách BasicAuthentication như sau, bạn sẽ nhận được mã lỗi:
steps.basicauthentication.InvalidBasicAuthenticationSource
Tương tự, lỗi này cũng có thể xảy ra nếu loại Xác thực, chẳng hạn như Bearer, Xác thực thông báo, v.v. được sử dụng trong tiêu đề Uỷ quyền.
Độ phân giải
Đảm bảo rằng tiêu đề mà thông tin nhập vào chính sách BasicAuthentication được chuyển có loại Xác thực và thuộc loại "Cơ bản".
Để khắc phục vấn đề với chính sách BasicAuthentication được thảo luận ở trên, hãy gửi yêu cầu API bằng cách chuyển chuỗi được mã hoá Base64 hợp lệ với giá trị "Cơ bản" Loại xác thực trong tiêu đề Uỷ quyền như được hiển thị bên dưới:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"