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ı

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.basicauthentication.InvalidBasicAuthenticationSource 500 On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (e.g., does not start with "Basic").
steps.basicauthentication.UnresolvedVariable 500 The required source variables for the decode or encode are not present. This error can only occur if IgnoreUnresolvedVariables is false.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when Fix
UserNameRequired The <User> element must be present for the named operation.
PasswordRequired The <Password> element must be present for the named operation.
AssignToRequired The <AssignTo> element must be present for the named operation.
SourceRequired The <Source> element must be present for the named operation.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. BasicAuthentication.BA-Authenticate.failed = true

Example error response

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

Example fault rule

<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