Temel Kimlik Doğrulama politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

Şu kimlikler için basit Temel Kimlik Doğrulaması kullanmanızı sağlar: yeni bir yol sağlar. Politika bir kullanıcı adı ve şifre alır, Base64 bunları kodlar ve değişkene dönüştürülebilir. Elde edilen değer Basic Base64EncodedString biçimindedir. Bu değeri genellikle şunun gibi bir HTTP üstbilgisine yazarsınız: Yetkilendirme üstbilgisi.

Bu politika, Base64 kodlamalı bir dizede depolanan kimlik bilgilerinin kullanıcı adına şifresini çözmenizi de sağlar. ve şifre.

Video: Bu video, bir kullanıcı adını ve kullanıcı adını Base64 olarak şifresini girin.

Video: Bu video, base64 kodlu bir kullanıcı adının ve şifresini girin.

Ö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 şunlardır: +ref <User> ve <Password> öğeleri. Değişkenler emin olun. Genellikle, değişkenler bir anahtar/değer çiftinden okuyabilirsiniz. Anahtar Değer Eşlemesi'ne göz atın. İşlemler politikası.

Bu yapılandırma, &lt;AssignTo&gt; öğesi için arka uç sunucusuna gönderilen giden istek mesajına eklenmesi gerekir:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

<User> ve <Password> değerleri birleştirildi önce iki nokta üst üste kullanın.

Aşağıdaki girişe sahip bir anahtar/değer eşlemeniz olduğunu unutmayın:

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

Aşağıdaki KeyValuemapOperations politikalarını BasicAuthentication politikasından önce ekleyin <User> ve Google Etiket Yöneticisi'nin değerlerini <Password> öğelerini anahtar/değer deposundan alıp credentials.username ve credentials.password değişkenleri.

<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 kullanıcı adı ve şifrenin kodunu Authorization &lt;Source&gt; öğesi tarafından belirtildiği şekliyle HTTP üstbilgisi. Base64 Kodlanmış dize Basic Base64EncodedString. biçiminde olmalıdır

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


Temel Kimlik Doğrulama politikası hakkında

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

  • Kodlama: Base64, aşağıdaki dizinde depolanan bir kullanıcı adını ve şifreyi kodlar: değişkenler
  • Kod Çöz: Kullanıcı adının ve şifrenin şifresini Base64 olarak kodlanmış dize

Kullanıcı adı ve şifre genellikle anahtar/değer deposunda saklanır ve daha sonra anahtar/değer deposunu oluşturur. Anahtar/değer deposu kullanma hakkında ayrıntılar için Anahtar/Değer Eşleme İşlemleri bölümüne bakın. politikasına tabidir.

Öğe referansı

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

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

&lt;BasicAuthentication&gt; özellikler

<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

&lt;Operation&gt; öğe

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

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

Dize.

Geçerli değerler şunlardır:

  • Kodla
  • Decode

&lt;IgnoreUnresolvedVariables&gt; öğe

true olarak ayarlandığında, değişken çözüme ulaştırıldı. Temel Kimlik Doğrulama politikası bağlamında kullanıldığında bu ayar genellikle false; parola, belirtilen değişkenlerde bulunamıyor.

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

Boole

&lt;User&gt; öğe

  • Kodlama için değişkeni belirtmek üzere <User> öğesini kullanın emin olun. Kullanıcı adı ve şifre değerleri her URL'den önce iki nokta üst üste ile Base64 kodlaması.
  • 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: Zorunlu
Tür:

Yok

Özellikler

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

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

Yok Zorunlu

&lt;Password&gt; öğe

  • Kodlama için değişkeni belirtmek üzere <Password> öğesini kullanın girmeniz gerekir.
  • 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
referans

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

Yok Zorunlu

&lt;AssignTo&gt; öğe

Bu değişkenin oluşturduğu kodlanmış veya kodu çözülmüş değerle ayarlanacak hedef değişkeni belirtir politikası.

Aşağıdaki örnekte, politikanın Authorization ayarını yapması gerektiği belirtilmektedir iletinin başlığını oluşturulan değere dönüştür:

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

Dize

Özellikler

Özellik Açıklama Varsayılan Varlık
createNew Değişkenin değişken olması durumunda politikanın üzerine yazması gerekip gerekmediğini belirler. ayarlandı.

"False" (yanlış) olduğunda, değişkene atama yalnızca değişken şu anda ayarlanmamış (null).

"true" (doğru) olduğunda, değişkene atama her zaman gerçekleşir.

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

false İsteğe bağlı

&lt;Source&gt; öğe

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

<Source>request.header.Authorization</Source>
Varsayılan: Yok
Bulunma: Kodu Çö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 (doğru değeriyle)
ziyaret edin.

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

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