Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Son adım güvenliği için hafif Temel Kimlik Doğrulama özelliğini kullanmanızı sağlar. Politika bir kullanıcı adı ve şifre alır, Base64 bunları kodlar ve sonuçta elde edilen değeri bir değişkene yazar. Elde edilen değer Basic
Base64EncodedString
biçimindedir. Bu değeri genellikle Authorization başlığı gibi bir HTTP üst bilgisine yazarsınız.
Politika, Base64 olarak kodlanmış bir dizede depolanan kimlik bilgilerinin kodunu kullanıcı adı ve şifreye dönüştürmenize de olanak tanır.
Video: Bu video, Temel Kimlik Doğrulama politikası kullanılarak kullanıcı adı ve şifrenin nasıl base64 kodlanacağını gösterir.
Video: Bu video, Temel Kimlik Doğrulama politikası kullanılarak base64 kodlamalı kullanıcı adı ve şifre kodunun nasıl çözüleceğini gösterir.
Sana Özel
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>
öğelerinde ref
özellikleri tarafından belirtilen değişkenlerden türetilir. Bu politika yürütülmeden önce değişkenler ayarlanmalıdır. Genellikle değişkenler bir anahtar/değer eşlemesinden okunan değerlerle doldurulur. Anahtar Değer Eşleme İşlemleri politikasını inceleyin.
Bu yapılandırma, <assignTo> öğesi tarafından belirtildiği şekliyle Authorization adlı HTTP üst bilgisinin, arka uç sunucusuna gönderilen giden istek mesajına 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şe sahip bir anahtar/değer eşlemeniz olduğunu göz önünde bulundurun:
{ "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 girebilmek için aşağıdaki KeyValueMapTransactions politikalarını 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 şekilde Authorization
HTTP üst bilgisinden kullanıcı adı ve şifrenin kodunu çözer. Base64 olarak kodlanmış dize, Basic Base64EncodedString.
biçiminde olmalıdır
Politika, kodu çözülmüş kullanıcı adını request.header.username değişkenine ve kodu çözülmüş şifreyi request.header.password değişkenine yazar.
Temel Kimlik Doğrulama politikası hakkında
Politikanın iki işlem modu vardır:
- Kodlama: Base64, değişkenlerde depolanan bir kullanıcı adını ve şifreyi kodlar
- Kod Çöz: Base64 olarak kodlanmış bir dizedeki kullanıcı adı ve şifrenin kodunu çözer.
Kullanıcı adı ve şifre genellikle anahtar/değer deposunda saklanır ve daha sonra, çalışma zamanında anahtar/değer deposundan okunur. Anahtar/değer çifti deposunun kullanımıyla ilgili ayrıntılar için Anahtar/Değer Eşlemesi İşlemleri politikasını inceleyin.
Öğe referansı
Öğe referansı, Basic Authentication 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>
<Basic Authentication> ö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ı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin 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 özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<İşlem> öğesi
Base64 politikasının kimlik bilgilerini kodlayıp kodlamasını çözmeyeceğini belirler.
<Operation>Encode</Operation>
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: |
Dize. Geçerli değerler şunları içerir:
|
<ignoreUnresolvedVariables> öğesi
true
değerine ayarlandığında, bir değişken çözümlenemezse politika hata bildirmez. Temel Kimlik Doğrulama politikası bağlamında kullanıldığında bu ayar genellikle false
olarak ayarlanır. Çünkü belirtilen değişkenlerde bir kullanıcı adı veya şifre bulunamazsa
hata verilmesi genellikle faydalıdır.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Varsayılan: | true |
Bulunma: | İ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ülmüş kullanıcı adının yazıldığı değişkeni belirtin.
<User ref="request.queryparam.username" />
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: |
Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
referans |
Politikanın dinamik olarak kullanıcı adını okuduğu (kodladığı) veya kullanıcı adını yazdığı (kodu çözdüğü) değişken. |
Yok | Gerekli |
<Password> öğesi
- Kodlama için şifreyi içeren değişkeni belirtmek için
<Password>
öğesini kullanın. - Kod çözme için, kodu çözülmüş şifrenin yazıldığı değişkeni belirtin.
<Password ref="request.queryparam.password" />
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: |
Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
referans |
Politikanın dinamik olarak şifreyi okuduğu (kodlama) veya şifreyi yazdığı (kod çözme) değişken. |
Yok | Gerekli |
<assignTo> öğesi
Bu politika tarafından oluşturulan kodlanmış veya kodu çözülmüş değerle ayarlanacak hedef değişkeni belirtir.
Aşağıdaki örnek, politikanın mesajın Authorization
üstbilgisini oluşturulan değere ayarlaması gerektiğini belirtir:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Varsayılan: | Yok |
Bulunma: | Gerekli |
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ılıp yazılmayacağını belirler.
"false" olduğunda, değişkene atama yalnızca değişkenin ayarlanmamış olduğu (null) olması durumunda gerçekleşir. "true" değeri kullanıldığında her zaman değişken atanır. Bu özelliği genellikle "false" (varsayılan) olarak ayarlarsınız. |
false | İsteğe bağlı |
<Source> öğesi
Kod çözme işlemi için Base64 olarak kodlanmış dizeyi içeren, Basic
Base64EncodedString
biçimindeki değişken. Örneğin, Authorization başlığına karşılık gelen request.header.Authorization
değerini belirtin.
<Source>request.header.Authorization</Source>
Varsayılan: | Yok |
Bulunma: | 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 Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgileri, hataları ele alan hata kuralları geliştiriyorsanız bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | Gelen Base64 olarak kodlanmış dize geçerli bir değer içermediğinde veya başlık hatalı olduğunda (ör. "Temel" ile başlamadığında) kod çözme işleminde. | build |
steps.basicauthentication.UnresolvedVariable |
500 | Kod çözme veya kodlama için gerekli kaynak değişkenleri mevcut değil. Bu hata yalnızca IgnoreUnresolvedVariables yanlış olduğunda ortaya çıkabilir. |
build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Gerçekleşme zamanı: | Düzelt |
---|---|---|
UserNameRequired |
Adlandırılan işlem için <User> öğesi mevcut olmalıdır. |
build |
PasswordRequired |
Adlandırılan işlem için <Password> öğesi mevcut olmalıdır. |
build |
AssignToRequired |
Adlandırılan işlem için <AssignTo> öğesi mevcut olmalıdır. |
build |
SourceRequired |
Adlandırılan işlem için <Source> öğesi mevcut olmalıdır. |
build |
Hata değişkenleri
Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen 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" } }
Hata kuralı örneği
<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>