Temel Kimlik Doğrulama politikası çalışma zamanı hatasını giderme

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

  1. Basic Authentication politikasında <Source> öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring, içinde <Source> öğesi için kullanılan değişken request.header.Authorization'dir:

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. 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> öğesini request.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>
    
  3. 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.

  4. Değişken şunlardan biriyse:

    1. Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
    2. Çö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

  1. Basic Authentication politikasında <Source> öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring, içinde <Source> öğesi için kullanılan değişken request.header.Authorization'dir:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. 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> öğesini request.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>
    
  3. <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

  1. Basic Authentication politikasında <Source> öğesi için kullanılan değişkeni tanımlayın. Bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki hatada <Source> öğesi için kullanılan değişken request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. 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> öğesini request.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>
    
  3. 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"