Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
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 aşağıdakilerden biriyse ortaya çıkar:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemez (tanımlanmamıştır)
Örneğin, BasicAuthentication politikasında <Source>
öğesinde request.header.Authorization
olarak belirtilen bir değişken varsa ancak Authorization başlığı API isteği kapsamında iletilmiyorsa bu hata meydana gelir.
Teşhis
BasicAuthentication politikasında
<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,
öğesinde<Source>
öğesi için kullanılan değişkenrequest.header.Authorization
'dir:"faultstring": "Unresolved variable : request.header.Authorization"
Hatanın oluştuğu belirli 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 belirli BasicAuthentication politikasını veya politikalarını belirleyin (yukarıdaki 1. adım).Örneğin, aşağıdaki politika
<Source>
öğesinifaultstring
öğesindekiyle eşleşenrequest.header.Authorization
adlı 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ılıp kullanılamayacağını belirleyin.
Değişken şunlardan biriyse:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemez (tanımlanmamıştır)
O halde hatanın nedeni budur.
Yukarıda gösterilen BasicAuthentication politikası örneğinde,
request.header.Authorization
değişkeni istek kapsamında iletilmemiştir. Yani API isteği, aşağıda gösterildiği gibi Authorization başlığı olmadan yapılmıştır:curl -v "http://org-env.apigee.net/basicauth"
Temel Kimlik Doğrulama 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ılabildiğinden emin olun.
Yukarıda açıklanan örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için aşağıda gösterildiği gibi bir API isteği gönderin:
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 | TemelKimlikDoğrulama Politikası'nın giriş kaynağı değişkeni, geçerli bir Base64 kodlu dize değil. |
Başlık Biçimi Bozuk | BasicAuthentication politikasına iletilen Base64 kodlu dizeyi içeren başlık hatalı biçimlendirilmiş. |
Neden: Geçersiz kaynak değişkeni
Bu hata, BasicAuthentication politikasının <Source>
öğesinde belirtilen Base64 olarak kodlanmış dizeyi içeren değişken geçerli bir değer içermiyorsa ortaya çıkar.
Örneğin, bu hata, BasicAuthentication politikasının <Source>
öğesinde belirtilen değişkende geçerli bir Base64 kodlu dize yoksa ortaya çıkar.
Teşhis
BasicAuthentication politikasında
<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,
öğesinde<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"
Hatanın oluştuğu belirli API Proxy'sindeki tüm BasicAuthentication politikalarını inceleyin. Bir veya daha fazla Temel Kimlik Doğrulama politikası olabilir.
<Source>
öğesinde belirtilen değişkenin, hata dizesinde tanımlanan değişken adıyla (yukarıdaki 1. adım) eşleştiğini Temel Kimlik Doğrulama politikasını (ies) tanımlayın.Örneğin, aşağıdaki politika
<Source>
öğesinirequest.header.Authorization
adlı vefaultstring
ile eşleşen 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 Base64 olarak kodlanmış geçerli bir dize değilsehatanın nedeni budur.
Yukarıda gösterilen BasicAuthentication politikası örneğinde, istemci tarafından başlık olarak gönderilen
request.header.Authorization
değ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.Authorization
değişkeninde geçersiz bir Base64 kodlu dize ("23435"
") bulunduğundan aşağıdaki hata kodunu alırsınız:steps.basicauthentication.InvalidBasicAuthenticationSource
Çözünürlük
BasicAuthentication politikasında <Source>
öğesi için belirtilen değişkenin geçerli bir Base64 kodlu dizeye sahip olduğundan emin olun.
Yukarıda açıklanan örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için aşağıdaki gibi Authorization üst bilgisine geçerli bir Base64 kodlamalı dize göndererek bir API isteği gönderin:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Neden: Başlık hatalı biçimlendirilmiş/geçersiz
Bu hata, BasicAuthentication politikasına iletilen üstbilgi hatalı veya geçersizse ortaya çıkar.
Örneğin, bu hata BasicAuthentication politikasında<Source>
öğesinde request.header.Authorization
olarak belirtilen bir değişken varsa ve API isteği kapsamında iletilen başlık hatalı biçimlendirilmişse/geçersizse ortaya çıkar.
Teşhis
BasicAuthentication politikasında
<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
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Hatanın oluştuğu belirli 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 belirli BasicAuthentication politikalarını (politikaları) tanımlayın (yukarıdaki 1. adım).Örneğin, aşağıdaki politika
<Source>
öğesinifaultstring
öğesindekiyle eşleşenrequest.header.Authorization
adlı 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 üstbilgiyse ve bozuk veya geçersizse (ör. kimlik doğrulama türü yoksa veya kimlik doğrulama türü "Temel" değilse) hata bununla ilgilidir.
Yetkilendirme üst bilgisi şu biçimdedir:
Authorization: <Authentication type> <credentials>
Bozuk bir üstbilgi, BasicAuthentication politikasına iki şekilde iletilebilir:
1. örnek: Üstbilgide kimlik doğrulama türü yok:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
Yukarıdaki örnekte, Authorization başlığında Authentication türü yoktur. Bu üstbilgi, yukarıda gösterilen BasicAuthentication politikasına iletilirse şu hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSource
2. Örnek: Kimlik doğrulama türü "Temel" değildir:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Yukarıdaki örnekte, Authorization üstbilgisinde "Temel" kimlik doğrulama türü yoktur. Bu, yukarıda gösterilen BasicAuthentication politikasına iletilirse aşağıdaki hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSource
Benzer şekilde, bu hata, Yetkilendirme başlığında Taşıyıcı, Özet Kimlik Doğrulama gibi bir Kimlik Doğrulama türü kullanıldığında da ortaya çıkabilir.
Çözünürlük
BasicAuthentication politikasına girişin aktarıldığı üstbilginin Authentication türüne sahip olduğundan ve "Basic" türü olduğundan emin olun.
Yukarıda açıklanan örnek BasicAuthentication politikasıyla ilgili sorunu düzeltmek için, aşağıdaki gibi Authorization üstbilgisinde "Basic" kimlik doğrulama türüne sahip 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"