Page 90 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 90
90 | Kimlik Doğrulama Altyapılarının Kullanımı
Yüksek erişilebilirliği sağlamak için, Şekil 2’de görülen mimari tasarım örnektir. Birçok CAS sunucusu,
Kubernetes tarafından yönetilebilir şekilde konfigüre edilebilir. Bu konfigürasyon ile CAS sunucu
uygulamalarından herhangi birisinin çöktüğü durumda, Kubernetes’in küme orkestratörü tarafından
başka bir sunucu üzerinde kaldırılmaktadır. CAS Sunucularının bir hata durumunda servisler için
oluşturdukları biletlerin (TGT, ST) kaybedilmemesi için Redis, master-slave yapısında replike
edilmiştir. CAS Sunucu uygulamaları, yük dengeleyicisi (load balancer) arkasından sunulmaktadır.
Merkezi Kimlik Doğrulama Servisi
Redis Kümesi
CAS Sunucusu
CAS Sunucusu
http://merkezikimlik
Yük Dağıtıcısı Sentinel Sentinel Sentinel
Redis Master Redis Slave Redis Slave
CAS Yönetim Uygulaması
Şekil 2. CAS’ın Örnek Küme Yapısı
10. Spring Framework Entegrasyonu
Spring Security’nin CAS ile entegre edilebilmesi için, CAS istemcisi olduğunu belirten bir kütüphane
eklemelidir. (org.springframework.security:spring-security-cas)
Kullanıcı uygulamaya ilk defa istek attığında AuthenticationException ile karşılaşılır. Bu noktada,
casAuthenticationEntryPoint ile CAS adresi tanımlayarak CAS’a yönlendirme yapılması gereklidir.
Ikinci olarak, CAS’a giriş yapıldıktan sonra ST ile uygulamaya gelen istekteki bileti doğrulamak için
yapılandırmalar gereklidir. UsernamePasswordAuthenticationToken ile ST’yi temsil edecek sınıf
oluşturulur. Uygulamaya ST içeren istek geldiğinde (bu da UsernamePasswordAuthenticationToken),
yalnızca bu tip isteklere cevap verecek casAuthenticationProvider oluşturulur ve ticket’ı doğrulamak
için TicketValidator arayüzünü implement eden Cas20ServiceTicketValidator nesnesi oluşturulur.
Bu sınıf, CAS’a ST’yi doğrulamak için istek atar. CAS da, içerisinde kullanıcı adı olan bir XML cevap
döner. Cas20TicketValidator, dönen XML’i parse eder ve kullanıcı adını içeren TicketResponse
oluşturur. casAuthenticationProvider, bu kullanıcının sahip olduğu rolleri (GrantedAuthority)
yüklemek için AuthenticationUserDetails’e istek atar ve en sonda sahip olduğu TicketResponse
ve GrantedAuthority bilgileri ile casAuthenticationToken oluşturur. Bu noktada kontrol tekrar
casAuthenticationFilter sınıfına geçer ve casAuthenticationToken’ı SecurityContext’e yerleştirilir.
AuthenticationException’a neden olan sayfaya geri yönlendirme yapılır.