Temel Kimlik Doğrulama politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

Son adım güvenliği için hafif Temel Kimlik Doğrulama özelliğini kullanmanızı sağlar. Politika bir kullanıcı adı ve şifre alır, Base64 bunları kodlar ve sonuçta elde edilen değeri bir değişkene yazar. Elde edilen değer Basic Base64EncodedString biçimindedir. Bu değeri genellikle Authorization başlığı gibi bir HTTP üst bilgisine yazarsınız.

Politika, Base64 olarak kodlanmış bir dizede depolanan kimlik bilgilerinin kodunu kullanıcı adı ve şifreye dönüştürmenize de olanak tanır.

Video: Bu video, Temel Kimlik Doğrulama politikası kullanılarak kullanıcı adı ve şifrenin nasıl base64 kodlanacağını gösterir.

Video: Bu video, Temel Kimlik Doğrulama politikası kullanılarak base64 kodlamalı kullanıcı adı ve şifre kodunun nasıl çözüleceğini gösterir.

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. Bu politika yürütülmeden önce değişkenler ayarlanmalıdır. Genellikle değişkenler bir anahtar/değer eşlemesinden okunan değerlerle doldurulur. Anahtar Değer Eşleme İşlemleri politikasını inceleyin.

Bu yapılandırma, <assignTo> öğesi tarafından belirtildiği şekliyle Authorization adlı HTTP üst bilgisinin, arka uç sunucusuna gönderilen giden istek mesajına eklenmesiyle sonuçlanır:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

<User> ve <Password> değerleri, Base64 kodlamasından önce iki nokta üst üste işaretiyle birleştirilir.

Aşağıdaki girişe sahip bir anahtar/değer eşlemeniz olduğunu göz önünde bulundurun:

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

<User> ve <Password> öğelerinizin değerlerini anahtar/değer deposundan çıkarıp credentials.username ve credentials.password değişkenlerine girebilmek için aşağıdaki KeyValueMapTransactions politikalarını 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 kod çö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 şekilde Authorization HTTP üst bilgisinden kullanıcı adı ve şifrenin kodunu çö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 kodu çözülmüş şifreyi request.header.password değişkenine yazar.


Temel Kimlik Doğrulama politikası hakkında

Politikanın iki işlem modu vardır:

  • Kodlama: Base64, değişkenlerde depolanan bir kullanıcı adını ve şifreyi kodlar
  • Kod Çöz: Base64 olarak kodlanmış bir dizedeki kullanıcı adı ve şifrenin kodunu çözer.

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

Öğe referansı

Öğe referansı, Basic Authentication 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>

<Basic Authentication> özellikleri

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

Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan ö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 karakterden uzun olamaz.

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

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İ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. Bu politika, bir akışa bağlı kalsa bile uygulanmaz.

true İsteğe bağlı
async

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

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde 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ı
Tür Dize

<İşlem> öğesi

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

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

Dize.

Geçerli değerler şunları içerir:

  • Kodla
  • Decode

<ignoreUnresolvedVariables> öğesi

true değerine ayarlandığında, bir değişken çözümlenemezse politika hata bildirmez. Temel Kimlik Doğrulama politikası bağlamında kullanıldığında bu ayar genellikle false olarak ayarlanır. Çünkü belirtilen değişkenlerde bir kullanıcı adı veya şifre bulunamazsa hata verilmesi genellikle faydalıdır.

<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 işaretiyle birleştirilir.
  • Kod çözme 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: Gerekli
Tür:

Yok

Özellikler

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

Politikanın dinamik olarak kullanıcı adını okuduğu (kodladığı) veya kullanıcı adını yazdığı (kodu çözdüğü) değişken.

Yok Gerekli

<Password> öğesi

  • Kodlama için şifreyi içeren değişkeni belirtmek için <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: Gerekli
Tür:

Yok

Özellikler

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

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

Yok Gerekli

<assignTo> öğesi

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

Aşağıdaki örnek, politikanın mesajın Authorization üstbilgisini oluşturulan değere ayarlaması gerektiğini belirtir:

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

Dize

Özellikler

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

"false" olduğunda, değişkene atama yalnızca değişkenin ayarlanmamış olduğu (null) olması durumunda gerçekleşir.

"true" değeri kullanıldığında her zaman değişken atanır.

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

false İsteğe bağlı

<Source> öğesi

Kod çözme işlemi için Base64 olarak kodlanmış dizeyi içeren, Basic Base64EncodedString biçimindeki değişken. Örneğin, Authorization başlığına karşılık gelen request.header.Authorization değerini 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, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgileri, hataları ele alan hata kuralları geliştiriyorsanız bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar 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ı olduğunda (ör. "Temel" ile başlamadığında) kod çözme işleminde.
steps.basicauthentication.UnresolvedVariable 500 Kod çözme veya kodlama için gerekli kaynak değişkenleri mevcut değil. Bu hata yalnızca IgnoreUnresolvedVariables yanlış olduğunda ortaya çıkabilir.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Gerçekleşme zamanı: Düzelt
UserNameRequired Adlandırılan işlem için <User> öğesi mevcut olmalıdır.
PasswordRequired Adlandırılan işlem için <Password> öğesi mevcut olmalıdır.
AssignToRequired Adlandırılan işlem için <AssignTo> öğesi mevcut olmalıdır.
SourceRequired Adlandırılan 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 listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name, hataya neden olan 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"
   }
}

Hata kuralı örneği

<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şleme İşlemleri politikası