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ı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğ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 |
|---|---|
| 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:
|
<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"). | build |
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. |
build |
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. |
build |
PasswordRequired |
The <Password> element must be present for the named operation. |
build |
AssignToRequired |
The <AssignTo> element must be present for the named operation. |
build |
SourceRequired |
The <Source> element must be present for the named operation. |
build |
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>