Basic Kimlik Doğrulama
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.
Genel Bakış
HTTP Basic Authentication standardını kullanarak API isteklerini güvenli bir şekilde doğrulamak. İsteklerde gönderilen kullanıcı adı ve şifre bilgilerini base64 ile decode ederek kimlik kontrolü yapmak.
Amacı Nedir?
- HTTP Basic Authentication standardını kullanarak API isteklerini güvenli bir şekilde doğrulamak. İsteklerde gönderilen kullanıcı adı ve şifre bilgilerini base64 ile decode ederek kimlik kontrolü yapmak.
- Secret Manager, LDAP, veritabanı veya harici API entegrasyonları ile merkezi kimlik doğrulama altyapısına bağlanmak. Kullanıcı bilgilerini güvenli şekilde Identity/Role Group servisleri üzerinden doğrulamak.
- Kullanıcının rollerini ve yetkilerini kontrol ederek endpoint bazında veya method bazında erişim kontrolü sağlamak. Authorization yapılandırması ile sadece yetkili kullanıcıların belirli API'lere erişmesini garanti etmek.
- Kimlik doğrulaması yapılan kullanıcı bilgilerini (username, user ID vb.) backend servislerine özel header ile iletmek. Backend'in kullanıcı bağlamında işlem yapmasını sağlamak.
- IP adresi kontrolü, clear auth ve error message özelleştirme gibi gelişmiş güvenlik katmanları ekleyerek çok katmanlı güvenlik sağlamak.
Çalışma Prensibi
- İstek Gelişi: API Gateway'e gelen her HTTP/HTTPS isteği için, istemin
Authorizationheader'ı kontrol edilir veBasicprefix ile base64 encoded credentials (kullanıcı adı:şifre) aranır. - Politika Kontrolü: Base64 Authentication politikası aktif ise, sistem aşağıdaki sırayla kontrol yapar:
- Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
- Politika aktif mi (active=true)?
- Variable kullanılıyor mu yoksa Apinizer default mı?
- Kimlik Doğrulama Kontrolü: Authorization header'ı decode edilir ve username/password çıkarılır. Identity Role Group servisi (Secret Manager, LDAP, Database veya API) ile kimlik bilgileri doğrulanır. Eğer
checkClientIpAddressaktifse, istemci IP adresi de kontrol edilir. - Karar Verme:
- Doğrulama Başarılı: Kullanıcı doğrulanırsa, opsiyonel olarak authorization (rol kontrolü) yapılır.
addUserToHeaderaktifse kullanıcı bilgisi backend'e özel header ile iletilir.clearAuthaktifse, Authorization header backend'e gönderilmez. - Doğrulama Başarısız: Kullanıcı kimlik bilgileri geçersizse veya yetkisi yoksa HTTP 401/403 hatası döndürülür.
- Doğrulama Başarılı: Kullanıcı doğrulanırsa, opsiyonel olarak authorization (rol kontrolü) yapılır.
- Hata İşleme: Politika kuralına uymayan istekler için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.
: karakteri içerebilirBase64 çözüldükten sonra kullanıcı adını şifreden yalnızca ilk : karakteri ayırır; sonrasındaki tüm karakterler şifrenin parçası sayılır (RFC 7617). Örneğin kullanici:12:34 bilgisi kullanici kullanıcı adı ve 12:34 şifresi olarak çözümlenir.
Şifrede : bulunan kullanıcıların isteği daha önce "kimlik bilgisi eksik" hatasıyla reddediliyordu. Kullanıcı adında : kullanılamaz — standardın gereğidir.
Özellikler ve Yetenekler
Temel Özellikler
- HTTP Basic Authentication Desteği: RFC 7617 standardına uygun base64 encoded username:password formatında kimlik doğrulama. Authorization header'ından otomatik decode ve credential extraction.
- Identity/Role Group Entegrasyonu: Secret Manager, LDAP, Database veya harici API servisleri ile merkezi kimlik yönetimi. Kullanıcı bilgilerini güvenli şekilde doğrulama ve rol bilgilerini alma.
- Username Variable Desteği: Doğrulanan kullanıcı adını Apinizer değişkenlerine yazma. Policy chain boyunca kullanıcı bilgisine erişim ve backend'e aktarım imkanı.
- Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
- Koşul Bazlı Uygulama: Query Builder ile karmaşık koşullar oluşturarak politikanın ne zaman uygulanacağını belirleme (örn: sadece belirli endpoint'lere veya header değerlerine göre).