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ı
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). | build |
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. |
build |
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. |
build |
PasswordRequired |
Adlandırılmış işlemde <Password> öğesi mevcut olmalıdır. |
build |
AssignToRequired |
Adlandırılmış işlemde <AssignTo> öğesi mevcut olmalıdır. |
build |
SourceRequired |
Adlandırılmış işlemde <Source> öğesi mevcut olmalıdır. |
build |
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>