Temel Kimlik Doğrulama politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerini görüntüleyin.

Ne

Son kilometre güvenliği için basit Temel Kimlik Doğrulama'yı kullanabilmenizi sağlar. Politika bir kullanıcı adı ile şifre alır, Base64 bunları şifreler ve elde edilen değeri bir değişkene yazar. Elde edilen değer Basic Base64EncodedString biçimindedir. Bu değeri genellikle Yetkilendirme başlığı gibi bir HTTP üst bilgisine yazarsınız.

Politika ayrıca Base64 kodlamalı bir dizede depolanan kimlik bilgilerinin şifresini bir kullanıcı adı ve şifre ile çözmenizi de sağlar.

Video: Bu video, Temel Kimlik Doğrulama politikasını kullanarak kullanıcı adı ve şifrenin Base64 olarak nasıl kodlanacağını göstermektedir.

Video: Bu video, Temel Kimlik Doğrulama politikasını kullanarak Base64 kodlamalı kullanıcı adı ve şifrelerin kodunu çözmeyi göstermektedir.

Sana Özel

Giden kodlama

<BasicAuthentication name="ApplyBasicAuthHeader">
   <DisplayName>ApplyBasicAuthHeader</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="BasicAuth.credentials.username" />
   <Password ref="BasicAuth.credentials.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

Yukarıdaki örnek politika yapılandırmasında, kodlanacak kullanıcı adı ve şifre, <User> ve <Password> öğelerinde ref özellikleri tarafından belirtilen değişkenlerden türetilir. Değişkenler, bu politika yürütülmeden önce ayarlanmalıdır. Değişkenler genellikle bir anahtar/değer eşlemesinden okunan değerlerle doldurulur. Anahtar/Değer Eşlemesi İşlemleri politikasını inceleyin.

Bu yapılandırma, <assignTo> öğesi tarafından belirtilen Yetkilendirme adlı HTTP üst bilgisiyle sonuçlanır ve arka uç sunucusuna gönderilen giden istek iletisine eklenir:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

<User> ve <Password> değerleri, Base64 kodlamasından önce iki nokta üst üste ile kullanılır.

Aşağıdaki girişe sahip bir anahtar/değer çiftinizin olduğunu düşünün:

{
  "encrypted" : true,
  "entry" : [ {
    "name" : "username",
    "value" : "MyUsername
  }, {
    "name" : "password",
    "value" : "MyPassword
  } ],
  "name" : "BasicAuthCredentials"
}
      

<User> ve <Password> öğelerinizin değerlerini anahtar/değer deposundan ayıklayıp credentials.username ve credentials.password değişkenlerine doldurmak için aşağıdaki KeyValueMapOperations politikalarını BasicAuthentication politikasından önce ekleyin.

<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials">
  <Scope>apiproxy</Scope>
  <Get assignTo="credentials.username" index='1'>
    <Key>
      <Parameter>username</Parameter>
    </Key>
  </Get>
  <Get assignTo="credentials.password" index='1'>
    <Key>
      <Parameter>password</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>
      

Gelen kodu çözme

<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>

Bu politika örneğinde politika, <Source> öğesinde belirtildiği gibi kullanıcı adı ve şifrenin Authorization HTTP üst bilgisini çözer. Base64 olarak kodlanmış dize, Basic Base64EncodedString. biçiminde olmalıdır

Politika, kodu çözülmüş kullanıcı adını request.header.username değişkenine ve şifresi çözülmüş şifreyi request.header.password değişkenine yazar.


Temel Kimlik Doğrulama politikası hakkında

Politikanın iki çalışma modu vardır:

  • Kodlama: Base64, değişkenlerde depolanan kullanıcı adını ve şifreyi kodlar
  • Kod çözme: Kullanıcı adı ve şifrenin Base64 kodlamalı bir dizeden çözülmesi

Kullanıcı adı ve şifre genellikle anahtar/değer deposunda depolanır ve daha sonra çalışma zamanında anahtar/değer deposundan okunur. Anahtar/değer deposunun kullanımıyla ilgili ayrıntılar için Anahtar/Değer Eşlemesi İşlemleri politikasını inceleyin.

Öğe referansı

Öğe referansı, BasicAuthentication politikasının öğelerini ve özelliklerini açıklar.

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
   <DisplayName>Basic Authentication 1</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="request.queryparam.username" />
   <Password ref="request.queryparam.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
   <Source>request.header.Authorization</Source> 
</BasicAuthentication>

<TemelKimlik Doğrulama> özellikleri

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">

Aşağıdaki tabloda, tüm politika üst öğelerinde yaygın olarak kullanılan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakteri aşamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için <DisplayName> öğesini kullanın.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmek için false değerine ayarlayın. Bu, çoğu politika için beklenen bir durumdur.

Bir politika başarısız olsa bile akış yürütmenin devam etmesi için true olarak ayarlayın.

yanlış İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Politika, bir akışa bağlı kalsa bile zorunlu kılınmaz.

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

yanlış Kullanımdan kaldırıldı

<DisplayName> öğesi

Yönetim kullanıcı arayüzü proxy'sinde politikayı farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri kullanılır.

Varlık İsteğe bağlı
Type Dize

<İşlem> öğesi

Base64 politikasının kimlik bilgilerini kodlayıp çözmediğini belirler.

<Operation>Encode</Operation>
Varsayılan: Yok
Bulunma: Zorunlu
Tür:

Dize.

Geçerli değerler şunlardır:

  • Kodla
  • Kod çözme

<ignoreUnresolvedVariables> öğesi

true olarak ayarlandığında, bir değişken çözülemezse politika bir hata göndermez. Temel kimlik doğrulama politikası bağlamında kullanıldığında bu ayar genellikle false olarak ayarlanır. Bunun nedeni, belirtilen değişkenlerde bir kullanıcı adı veya şifrenin bulunamaması durumunda genellikle hatanın döndürülmesidir.

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Varsayılan: true
Bulunma: İsteğe bağlı
Tür:

Boole

<User> öğesi

  • Kodlama için kullanıcı adını içeren değişkeni belirtmek üzere <User> öğesini kullanın. Kullanıcı adı ve şifre değerleri, Base64 kodlamasından önce iki nokta üst üste ile kullanılır.
  • Kodu çözmek için, kodu çözülmüş kullanıcı adının yazıldığı değişkeni belirtin.
<User ref="request.queryparam.username" /> 
Varsayılan: Yok
Bulunma: Zorunlu
Tür:

Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
hakem

Politikanın kullanıcı adını dinamik olarak okuduğu (kodlama) veya kullanıcı adını (kod çözme) yazdığı değişken.

Yok Zorunlu

<Password> öğesi

  • Kodlama için şifreyi içeren değişkeni belirtmek üzere <Password> öğesini kullanın.
  • Kod çözme için, kodu çözülmüş şifrenin yazıldığı değişkeni belirtin.
<Password ref="request.queryparam.password" />
Varsayılan: Yok
Bulunma: Zorunlu
Tür:

Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
hakem

Politikanın dinamik olarak şifreyi okuduğu (kodlama) veya parola yazması (kod çözme) değişkeni.

Yok Zorunlu

<assignTo> öğesi

Bu politika tarafından oluşturulan kodlanmış veya kod çözülmüş değerle ayarlanacak hedef değişkeni belirtir.

Aşağıdaki örnekte politika, iletinin Authorization üst bilgisini oluşturulan değere ayarlamalıdır:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
Varsayılan: Yok
Bulunma: Zorunlu
Tür:

Dize

Özellikler

Özellik Açıklama Varsayılan Varlık
Yeni Oluştur Değişken zaten ayarlanmışsa politikanın değişkenin üzerine yazılıp yazılmayacağını belirler.

"false" olduğunda değişkenin atanması, yalnızca değişken şu anda ayarlanmadan bırakılırsa (null) gerçekleşir.

"true" (doğru) değerine ayarlandığında, değişkene atama her zaman gerçekleşir.

Bu özelliği genellikle "false" (varsayılan) olarak ayarlarsınız.

yanlış İsteğe bağlı

<Source> öğesi

Kod çözme için Base64 olarak kodlanmış dizeyi içeren değişken Basic Base64EncodedString biçimindedir. Örneğin, Yetkilendirme başlığına karşılık gelen request.header.Authorization belirtin.

<Source>request.header.Authorization</Source>
Varsayılan: Yok
Bulunma: Kod çözme işlemi için gereklidir.
Tür:

Yok

Akış değişkenleri

Politika başarısız olduğunda aşağıdaki akış değişkeni ayarlanır:

  • BasicAuthentication.{policy_name}.failed (true değeriyle)

Hata referansı

Bu bölümde, döndürülen hata kodları ve hata mesajları ile bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiler, hataları ele alacak hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme hakkında bilgi edinin.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.basicauthentication.InvalidBasicAuthenticationSource 500 Gelen Base64 olarak kodlanmış dize geçerli bir değer içermediğinde veya başlık hatalı biçimlendirilmiş bir kod çözme işleminde (ör. "Temel" ile başlamaz).
steps.basicauthentication.UnresolvedVariable 500 Kod çözme veya kodlama için gerekli kaynak değişkenleri mevcut değil. Bu hata yalnızca IgnoreUnresolvedVariables yanlışsa ortaya çıkabilir.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda oluşabilir.

Hata adı Şu durumda gerçekleşir: Düzelt
UserNameRequired Adlandırılmış işlem için <User> öğesi mevcut olmalıdır.
PasswordRequired Adlandırılmış işlem için <Password> öğesi mevcut olmalıdır.
AssignToRequired Adlandırılmış işlem için <AssignTo> öğesi mevcut olmalıdır.
SourceRequired Adlandırılmış işlem için <Source> öğesi mevcut olmalıdır.

Hata değişkenleri

Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son parçasıdır. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name, hatayı tetikleyen politikanın kullanıcı tarafından belirtilen adıdır. BasicAuthentication.BA-Authenticate.failed = true

Örnek hata yanıtı

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.basicauthentication.UnresolvedVariable"
      },
      "faultstring":"Unresolved variable : request.queryparam.password"
   }
}

Örnek hata kuralı

<FaultRule name="Basic Authentication Faults">
    <Step>
        <Name>AM-UnresolvedVariable</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Step>
        <Name>AM-AuthFailedResponse</Name>
        <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
    </Step>
    <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>

Şemalar

İlgili konular

Anahtar/Değer Eşlemesi İşlemleri politikası