Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
UnresolvedVariable
Hata kodu
steps.basicauthentication.UnresolvedVariable
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Örnek hata mesajı
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Neden
Bu hata, BasicAuthentication politikasının <Source> öğesinde belirtilen Base64 kodlu dizeyi içeren değişken şu durumlarda oluşur:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözülemiyor (tanımlanmamış)
Örneğin, BasicAuthentication politikasının <Source> öğesinde request.header.Authorization olarak belirtilen bir değişken varsa ancak yetkilendirme üstbilgisi API isteğinin bir parçası olarak iletilmiyorsa bu hata oluşur.
Teşhis
BasicAuthentication politikasındaki
<Source>öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtınınfaultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring,içinde<Source>öğesi için kullanılan değişkenrequest.header.Authorization'dir:"faultstring": "Unresolved variable : request.header.Authorization"Hatayı içeren API proxy'sindeki tüm BasicAuthentication politikalarını inceleyin. Bir veya daha fazla BasicAuthentication politikası olabilir.
<Source>öğesinde belirtilen değişkenin, hata dizesinde tanımlanan değişken adıyla eşleştiği (yukarıdaki 1. adım) belirli BasicAuthentication politikasını veya politikalarını belirleyin.Örneğin, aşağıdaki politika
<Source>öğesini,faultstringöğesindekiyle eşleşenrequest.header.Authorizationadlı bir değişkene ayarlar:<?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>Değişkenin, BasicAuthentication politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.
Değişken şu durumlarda:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözülemiyor (tanımlanmamış)
Bu durumda hatanın nedeni budur.
Yukarıda gösterilen BasicAuthentication politikasında,
request.header.Authorizationdeğişkeni isteğin bir parçası olarak iletilmedi. Yani API isteği, aşağıdaki örnekte gösterildiği gibi Authorization başlığı olmadan yapıldı:curl -v "http://org-env.apigee.net/basicauth"
BasicAuthentication politikasında kullanılan değişken kullanılamadığından şu hata kodunu alırsınız:
steps.basicauthentication.UnresolvedVariable
Çözünürlük
BasicAuthentication politikasında kullanılan değişkenin tanımlandığından veya giriş olarak iletildiğinden ve politikanın yürütüldüğü akışta kullanılabilir olduğundan emin olun.
Yukarıda bahsedilen örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için aşağıda gösterildiği gibi bir API isteğinde bulunun:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
Hata kodu
steps.basicauthentication.InvalidBasicAuthenticationSource
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Hata örneği Hata mesajı
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Olası nedenler
Bu hatanın olası nedenleri şunlardır:
| Neden | Açıklama |
|---|---|
| Geçersiz kaynak değişkeni | BasicAuthentication politikasına yönelik giriş kaynağı değişkeni, geçerli bir Base64 kodlu dize değil. |
| Başlık hatalı biçimlendirilmiş | BasicAuthentication politikasına iletilen Base64 kodlu dizeyi içeren başlık hatalı biçimlendirilmiş. |
Neden: Kaynak değişkeni geçersiz
Bu hata, BasicAuthentication politikasının <Source> öğesinde belirtilen Base64 kodlu dizeyi içeren değişkende geçerli bir değer yoksa oluşur.
Örneğin, BasicAuthentication politikasının <Source> öğesinde belirtilen değişken geçerli bir Base64 kodlu dizeye sahip değilse bu hata oluşur.
Teşhis
BasicAuthentication politikasındaki
<Source>öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtınınfaultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring,içinde<Source>öğesi için kullanılan değişkenrequest.header.Authorization'dir:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"Hatayı içeren API proxy'sindeki tüm BasicAuthentication politikalarını inceleyin. Bir veya daha fazla BasicAuthentication politikası olabilir.
<Source>öğesinde belirtilen değişkenin, hata dizesinde tanımlanan değişken adıyla eşleştiği (yukarıdaki 1. adım) belirli BasicAuthentication politikalarını belirleyin.Örneğin, aşağıdaki politika
<Source>öğesini,faultstringöğesindekiyle eşleşenrequest.header.Authorizationadlı bir değişkene ayarlar:<?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>öğesinde belirtilen değişkende depolanan değer geçerli bir Base64 kodlu dize değilse hata bundan kaynaklanıyordur.Yukarıda gösterilen BasicAuthentication politikasında, istemci tarafından başlık olarak gönderilen
request.header.Authorizationdeğişkeni, aşağıda gösterildiği gibi geçersizdi:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
request.header.Authorizationdeğişkeni, "23435"" adlı geçersiz bir Base64 kodlu dizeye sahip olduğundan şu hata kodunu alırsınız:steps.basicauthentication.InvalidBasicAuthenticationSource
Çözünürlük
BasicAuthentication politikasındaki <Source> öğesi için belirtilen değişkende geçerli bir Base64 kodlu dize olduğundan emin olun.
Yukarıda bahsedilen örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için aşağıdaki örnekte gösterildiği gibi, yetkilendirme üstbilgisinde geçerli bir Base64 kodlu dize ileterek bir API isteği gönderin:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Neden: Başlık hatalı/geçersiz
Bu hata, BasicAuthentication politikasına iletilen üstbilgi yanlış biçimlendirilmişse veya geçersizse oluşur.
Örneğin, BasicAuthentication politikasında <Source> öğesinde request.header.Authorization olarak belirtilen bir değişken varsa ve API isteğinin bir parçası olarak iletilen başlık hatalı/geçersizse bu hata oluşur.
Teşhis
BasicAuthentication politikasındaki
<Source>öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtınınfaultstringöğesinde bulabilirsiniz. Örneğin, aşağıdaki hatada<Source>öğesi için kullanılan değişkenrequest.header.Authorization'dir:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"Hatayı içeren API proxy'sindeki tüm BasicAuthentication politikalarını inceleyin. Bir veya daha fazla BasicAuthentication politikası olabilir.
<Source>öğesinde belirtilen değişkenin, hata dizesinde tanımlanan değişken adıyla eşleştiği (yukarıdaki 1. adım) belirli BasicAuthentication politikalarını belirleyin.Örneğin, aşağıdaki politika
<Source>öğesini,faultstringöğesindekiyle eşleşenrequest.header.Authorizationadlı bir değişkene ayarlar:<?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>Değişken bir üstbilgi ise ve hatalı veya geçersizse (ör. kimlik doğrulama türü yoksa ya da kimlik doğrulama türü "Basic" değilse) hatanın nedeni budur.
Yetkilendirme üstbilgisi şu biçimdedir:
Authorization: <Authentication type> <credentials>Hatalı biçimlendirilmiş bir başlık, BasicAuthentication politikasına iki şekilde iletilebilir:
Örnek 1: Başlıkta kimlik doğrulama türü yok:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
Yukarıdaki örnekte, yetkilendirme başlığında kimlik doğrulama türü yok. Bu başlık yukarıda gösterilen BasicAuthentication politikasına iletilirse şu hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSource2. örnek: Kimlik doğrulama türü "Temel" türünde değil:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Yukarıdaki örnekte, Yetkilendirme başlığında "Temel" kimlik doğrulama türü yok. Bu, yukarıda gösterilen BasicAuthentication politikasına iletilirse şu hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSourceBenzer şekilde, yetkilendirme üstbilgisinde Bearer, Digest Auth gibi bir kimlik doğrulama türü kullanılıyorsa da bu hata oluşabilir.
Çözünürlük
BasicAuthentication politikasına girişin iletildiği başlığın kimlik doğrulama türüne sahip olduğundan ve türünün "Basic" olduğundan emin olun.
Yukarıda bahsedilen örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için aşağıdaki örnekte gösterildiği gibi, yetkilendirme üstbilgisinde "Basic" kimlik doğrulama türüyle geçerli bir Base64 kodlu dizeyi ileterek bir API isteği gönderin:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"