İlk yazımızda bir uygulamaya erişim isteğinde bulunulduğunda gerçekleşen adımlardan bahsettik. Sonraki yazımızda farklı erişim senaryoları için kullandığımız teknolojilerin nasıl evrimleştiğinden bahsettik. Bugün Federated Authentication kullanan diğer bir sektör standardı olan Security Assertion Markup Language (SAML) ve Single Sign On (SSO) ile yazımıza başlayalım.
–SERİNİN DİĞER YAZILARI–
- 1-XACML Authorization Authentication
- 2-OpenID OAuth2 OpenID Connect
- 3-SSO SAML Kerberos User Federation
- 4-Keycloak
- 5-Spring Boot ve Keycloak
1. Single Sign On (SSO) Nedir
SAML, kullanıcıların uygulama bazında login sessionlarının ayrı bir contextte tutulmasıyla oluşturulmuş bir Single Sign On(SSO) standardıdır. Burada SSO yu açmak gerekirse, bir uygulamaya login olduğunuzda aynı contextte çalışan diğer uygulamalara tekrardan login olmanıza gerek kalmayacağıdır. Örneğin bir şirkette çalışıyorsunuz ve bilgisayarınıza giriş yapabilmek için Domain’e veya Active Directory’e şifrenizle login oldunuz. O andan itibaren artık intranet uygulamalarında portal uygulamasına veya insan kaynakları uygulamasına tekrardan şifre girmenize gerek kalmadan uygulamaların sizi tanımasına verilen isimdir. Basit anlamda bir SSO aşağıdaki gibi çalışabilir
1.1. SSO Akışı
Tekrar SAML’a dönecek olursak, XML bazlı çalışan bu güvenlik protokolü açık kaynak kodludur. Authentication akışı aşağıdaki gibi çalışmaktadır.
Farkettiyseniz bir önceki yazımızdaki bahsettiğimiz OAuth2’deki authorization akışına çok benzemekle birlikte burada farklı olarak login credential veya secret doğrulama işlemi sadece delege edilen bir identity provider tarafından değil bir Active Directory gibi kullanıcı veritabanıyla birlikte identity provider ile federe şekilde, birlikte gerçekleştirilmesidir. Bu Federated Authentication’a bir örnektir. Burada kullanıcının bilgilerinin LDAP, Active Directory veya DBMS gibi sistemlerden edinilerek kullanılmasına da User Federation ismi verilir.
1.2. Kerberos Akışı
SAML’ı kullanan sistemlerden birisi de Kerberos’tur. Kerberos, tamamen güvensiz bir networkte güvenli iletişim başlatmak için ortaya koyulan Ticket(bilet) temelli çalışan bir yaklaşımdır. Aşağıdaki gibi çalışmaktadır.
Burada ek adım olarak kullanıcının servise erişebilmesi için ihtiyaç duyduğu bileti alabilmek için bilet sağlayan bir bilet alması gerekir. Bu bilet sağlayan bilet de Identity Provider tarafından kullanıcının kendi şifresi tarafından anahtarlanmıştır ve kullanıcı gerçekten doğru kullanıcı ise sadece çözülebilecek ve bilet sağlayan bilet ortaya çıkacaktır. Bu bileti çözen kullanıcı servise erişebilmek için ihtiyaç duyacağı bileti Identity Provider’dan edinebilecektir.
2. Sonuç
İlk 3 yazımız boyunca öğrendiğimiz kavramsal konuları somut örnekler eşliğinde Keycloak uygulama aracılığıyla deneyimleyeceğiz. İlgili yazıya buradan erişebilirsiniz.