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, Basic Authentication politikasının <Source>
öğesinde belirtilen Base64 olarak kodlanmış dizeyi içeren değişkenin şunlardan biri olması durumunda oluşur:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemiyor (tanımlanmadı)
Örneğin bu hata, Basic Authentication politikasındaki <Source>
öğesinde request.header.Authorization
olarak belirtilmiş bir değişken varsa ancak Yetkilendirme başlığı API isteği kapsamında iletilmezse ortaya çıkar.
Teşhis
Basic Authentication 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,
içinde<Source>
öğesi için kullanılan değişkenrequest.header.Authorization
'dir:"faultstring": "Unresolved variable : request.header.Authorization"
Hatanın oluştuğu API Proxy'sindeki tüm Temel Kimlik Doğrulama 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 eşleştiği Temel Kimlik Doğrulaması politikasını veya politikaları tanımlayın (yukarıdaki 1. adım).Örneğin, aşağıdaki politika
<Source>
öğesinirequest.header.Authorization
adlı bir değişkene ayarlar ve bu,faultstring
öğesinin içindekilerle eşleşir:<?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 tanımlanmış ve temel kimlik doğrulama politikasının yürütülmekte olduğu akışta tanımlanmış olup olmadığını belirleyin.
Değişken şunlardan biriyse:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemiyor (tanımlanmadı)
Hatanın nedeni budur.
Yukarıda gösterilen örnek Temel Kimlik Doğrulaması politikasında
request.header.Authorization
değişkeni, isteğin bir parçası olarak iletilmemiştir. Yani API isteği, aşağıda gösterildiği gibi Yetkilendirme 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ığı için şu hata kodunu alırsınız:
steps.basicauthentication.UnresolvedVariable
Çözünürlük
Temel Kimlik Doğrulaması politikasında kullanılan değişkenin, bir giriş olarak tanımlandığından veya aktarıldığından ve politikanın yürütüldüğü akışta kullanılabilir olduğundan emin olun.
Yukarıda açıklanan örnek Temel Kimlik Doğrulama politikasıyla ilgili sorunu düzeltmek için aşağıda gösterildiği şekilde 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şken | Temel Kimlik Doğrulama Politikası'nın giriş kaynağı değişkeni, Base64 kodlamalı geçerli bir dize değil. |
Başlık Bozuk | Basic Authentication politikasına aktarılan Base64 olarak kodlanmış dizeyi içeren üstbilgi hatalı biçimlendirilmiş. |
Neden: Geçersiz kaynak değişken
Bu hata, Basic Authentication 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, Basic Authentication politikasının <Source>
öğesinde belirtilen değişkende Base64 olarak kodlanmış geçerli bir dize yoksa bu hata oluşur.
Teşhis
Basic Authentication 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,
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"
Hatanın oluştuğu API Proxy'sindeki tüm Temel Kimlik Doğrulama politikalarını inceleyin. Bir veya daha fazla Temel Kimlik Doğrulama politikası olabilir.
<Source>
öğesinde belirtilen değişkenin, hata dizesinde (yukarıdaki 1. adım) tanımlanan değişken adıyla eşleştiği belirli Temel Kimlik Doğrulama politikasını (ies) tanımlayın.Örneğin, aşağıdaki politika
<Source>
öğesinirequest.header.Authorization
adlı bir değişkene ayarlar ve bu,faultstring
öğesinin içindekilerle eşleşir:<?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 Temel Kimlik Doğrulama politikasında, 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"
Değişken
request.header.Authorization
, Base64 kodlu geçersiz bir dize ("23435"
") içerdiği için şu hata kodunu alırsınız:steps.basicauthentication.InvalidBasicAuthenticationSource
Çözünürlük
BasicKimlik Doğrulaması politikasındaki <Source>
öğesi için belirtilen değişkenin, Base64 olarak kodlanmış geçerli bir dizeye sahip olduğundan emin olun.
Yukarıda açıklanan örnek Temel Kimlik Doğrulama politikasıyla ilgili sorunu düzeltmek için Yetkilendirme başlığında aşağıda gösterildiği gibi, geçerli bir Base64 kodlamalı dize ileterek API isteği yapın:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Neden: Başlık Bozuk/geçersiz
Bu hata, Basic Authentication politikasına geçirilen üstbilgi hatalı veya geçersizse ortaya çıkar.
Örneğin, Basic Authentication politikasının <Source>
öğesinde request.header.Authorization
olarak belirtilmiş bir değişken varsa ve API isteğinin bir parçası olarak iletilen başlık hatalı veya geçersizse bu hata meydana gelir.
Teşhis
Basic Authentication 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 API Proxy'sindeki tüm Temel Kimlik Doğrulama politikalarını inceleyin. Bir veya daha fazla Temel Kimlik Doğrulama politikası olabilir.
<Source>
öğesinde belirtilen değişkenin, hata dizesinde (yukarıdaki 1. adım) tanımlanan değişken adıyla eşleştiği belirli Temel Kimlik Doğrulama politikasını (ies) tanımlayın.Örneğin, aşağıdaki politika
<Source>
öğesinirequest.header.Authorization
adlı bir değişkene ayarlar ve bu,faultstring
öğesinin içindekilerle eşleşir:<?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 başlıksa ve bozuksa ya da geçersizse (yani, kimlik doğrulama türüne sahip değilse veya kimlik doğrulama türü "Temel" değilse), hatanın nedeni budur.
Yetkilendirme başlığı şu biçimdedir:
Authorization: <Authentication type> <credentials>
Bozuk üstbilgiler, Basic Authentication politikasına iki şekilde aktarılabilir:
1. Örnek: 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ü yoktur. Bu üstbilgi yukarıda gösterilen Temel Kimlik Doğrulama politikasına iletilirse şu hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSource
2. Örnek: Kimlik doğrulama türü "Temel" türünde değildir:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Yukarıdaki örnekte, Yetkilendirme başlığının Kimlik Doğrulama türü "Temel" değildir. Bu, yukarıda gösterilen Temel Kimlik Doğrulama politikasına iletilirse şu hata kodunu alırsınız:
steps.basicauthentication.InvalidBasicAuthenticationSource
Benzer şekilde bu hata, Yetkilendirme başlığında hamiline ait, Özet Kimlik Doğrulaması gibi Kimlik Doğrulama türü kullanıldığında da ortaya çıkabilir.
Çözünürlük
TemelKimlik Doğrulama politikası girişinin iletildiği üstbilginin Kimlik Doğrulama türüne sahip olduğundan ve "Temel" türünde olduğundan emin olun.
Yukarıda açıklanan örnek Basic Authentication politikası ile ilgili sorunu düzeltmek için aşağıda gösterildiği gibi Yetkilendirme başlığında "Temel" Kimlik Doğrulama türüne sahip geçerli bir Base64 şifreli dize ileterek API isteği yapın:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"