Temel Kimlik Doğrulama politikası

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

Ne?

Son aşama güvenliği için hafif Temel Kimlik Doğrulama'yı kullanmanızı sağlar. Politika, kullanıcı adı ve şifreyi alır, bunları Base64 ile kodlar ve sonuçta elde edilen değeri bir değişkene yazar. Sonuç değeri Basic Base64EncodedString biçimindedir. Genellikle bu değeri Authorization başlığı gibi bir HTTP başlığına yazarsınız.

Bu politika, Base64 kodlu bir dizede depolanan kimlik bilgilerini kullanıcı adı ve şifre olarak çözmenize de olanak tanır.

Video: Bu videoda, Temel Kimlik Doğrulama politikası kullanılarak kullanıcı adı ve şifrenin nasıl base64 ile kodlandığı gösterilmektedir.

Video: Bu videoda, Temel Kimlik Doğrulama politikasını kullanarak base64 kodlu bir kullanıcı adının ve şifrenin nasıl çözüleceği gösterilmektedir.

Örnekler

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> öğelerindeki 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 haritasından okunan değerlerle doldurulur. Anahtar Değer Eşlemesi İşlemleri Politikası'nı inceleyin.

Bu yapılandırma, <AssignTo> öğesinde belirtildiği gibi, arka uç sunucusuna gönderilen giden istek mesajına Authorization adlı HTTP üstbilgisinin 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şi içeren bir anahtar/değer eşlemeniz olduğunu varsayalım:

{
  "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 doldurabilmek 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 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 gibi, kullanıcı adını ve şifreyi Authorization HTTP başlığından çözümler. Base64 kodlu dize, Basic Base64EncodedString. biçiminde olmalıdır.

Politika, kod çözümü yapılmış kullanıcı adını request.header.username değişkenine, kod çözümü yapılmış şifreyi ise request.header.password değişkenine yazar.


Temel kimlik doğrulama politikası hakkında

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

  • Kodlama: Değişkenlerde depolanan kullanıcı adı ve şifreyi Base64 ile kodlar.
  • Kod çözme: Kullanıcı adının ve şifrenin Base64 kodlamalı dizeden kodunu çözer.

Kullanıcı adı ve şifre genellikle anahtar/değer deposunda saklanır ve çalışma zamanında anahtar/değer deposundan okunur. Anahtar/değer deposunu kullanma hakkında ayrıntılı bilgi için Key Value Map Operations policy (Anahtar Değer Eşleme İşlemleri politikası) başlıklı makaleyi 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>

<BasicAuthentication> ö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çermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<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

<Operation> öğesi

Politikanın kimlik bilgilerini Base64 olarak kodlayıp kodlamayacağını veya kodunu çözüp çözmeyeceğini belirler.

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

Dize.

Geçerli değerler şunlardır:

  • Kodla
  • Decode

<IgnoreUnresolvedVariables> öğesi

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

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Varsayılan: doğru
Presence: İ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ülen kullanıcı adının yazıldığı değişkeni belirtin.
<User ref="request.queryparam.username" /> 
Varsayılan: Yok
Presence: Zorunlu
Tür:

Yok

Özellikler

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

Politikanın kullanıcı adını dinamik olarak okuduğu (kodlama) veya yazdığı (kod çözme) 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, çözülen şifrenin yazıldığı değişkeni belirtin.
<Password ref="request.queryparam.password" />
Varsayılan: Yok
Presence: Zorunlu
Tür:

Yok

Özellikler

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

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

Yok Zorunlu

<AssignTo> öğesi

Encode işlemi için bu politika tarafından oluşturulan kodlanmış değerle ayarlanacak hedef değişkeni belirtir.

Aşağıdaki örnek, politikanın mesajın Authorization başlığını oluşturulan değere ayarlaması gerektiğini gösterir:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
Varsayılan: Yok
Presence: Encode işlemi için gereklidir.
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ıp yazmayacağını belirler.

"Yanlış" olduğunda, değişkene atama yalnızca değişken şu anda ayarlanmamışsa (null) gerçekleşir.

"Doğru" olduğunda 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 kodlu dizeyi içeren değişken, Basic Base64EncodedString biçiminde olmalıdır. Örneğin, Authorization üstbilgisine karşılık gelen request.header.Authorization değerini belirtin.

<Source>request.header.Authorization</Source>
Varsayılan: Yok
Presence: 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 döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. işleyeceğiz. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Ç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 kodlu dize geçerli bir değer içermediğinde veya başlık hatalı biçimlendirilmiş (ör. "Temel" ile başlamıyor).
steps.basicauthentication.UnresolvedVariable 500 Kod çözme veya kodlama için gerekli kaynak değişkenleri mevcut değil. Bu hata, yalnızca IgnoreUnresolvedVariables false (yanlış) değerine ayarlandığında oluşur.

Dağıtım hataları

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

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

Hata değişkenleri

Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.

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

Ö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

Key Value Map Operations policy