Single Sign-On (SSO) Nedir?

e-Devlet Kapısı kimlik doğrulama sistemini kullandığınızı varsayıyorum. Güncel durumda sağlık işlemlerinden online bankacılık işlemlerine daha pek çok vatandaşlık işleminde de bu kimlik doğrulama, yetkilendirme (authorization) gibi çözümlerinden faydalanabilmekteyiz. Diğer yandan, Facebook ve Twitter gibi sosyal ağlar ve Gmail gibi e-posta servisleri ile de kullanıcı erişimleri sağlanabilmekte. Bu erişimler için kullanılabilecek pek çok denetim / kimlik doğrulaması (authentication) çözümünden faydalanılabilmekte. Adım adım ilerlemek ve bu çözümlerden nasıl faydalanabileceğimize bakmak adına yeni bir yazı serisine başlayalım. Bu anlamda, ilk yazımısın konusu Single Sign-On (SSO).

Ancak, SSO ile odaklanılan çözümü tam olarak anlayabilmek için oturum sürecinin normalde nasıl işlediğine kısaca bir bakalım.

Kullanıcı bir X uygulamasına giriş yapmak istediğinde bu uygulamaya ait bir çerez (cookie) oluşturulur. Paralelde bir diğer uygulamaya (Y diyelim) giriş yaptığında bu defa Y uygulaması için ayrı bir çerez oluşturulacaktır. Çünkü oluşturulacak bu çerezler benzersizdir ve her biri ayrı bir şekilde tarayıcıda işlenir. Kullanıcının aynı kullanıcı bilgilerini kullanması bir değişiklik yaratmaz ve her uygulama için bu süreci tekrarlaması gerekir. Çünkü tarayıcı bu işleme izin vermemektedir.

Single Sign-On (SSO) işte tam bu noktada çözüm sağlar. SSO sayesinde oluşturulan bir token uygulamalar arasında işlenebilir.

Single Sign-On

Single Sign-On (SSO)

Yazının giriş bölümünde de bahsi geçtiği üzere, pek çok farklı servis üzerinden dağıtıklaştırılmış ve çoğu birbiriyle ilişkili uygulamalarda farklı mimariler tercih edilebilmekte1. Erişim sağlamak isteyen kullanıcı kimliğinin (user credential) doğrulamasını tek seferde gerçekleştirmek, farklı uygulamalar üzerinden tekrar kimlik doğrulamasına gerek kalmadan işlemlerin sağlanabilmesi kullanıcı deneyimi ve güvenlik için bir gereklilik haline gelmiş durumda2.

Single Sign-On (tek oturum açma) işte bu noktada değerlendirilebilecek çoklu erişim kontrolü çözümlerinden biri. Birden çok ilişkili, ancak bağımsız yazılım sisteminin erişim denetimi sağlayan Single Sign-On (SSO) sayesinde bir kullanıcı ilgili birkaç sisteme erişmek için tek bir kullanıcı kimliği ve şifre ile giriş yapabilmekte3. Bu işlemler, temel olarak yetkilendirme sunucusu, kullanıcıların bağlandıkları sitelerin sunucuları ve istemciler olmak üzere üç tip öge aracılığıyla gerçekleştirilir4.

Single Sign-On

Single Sign-On (SSO) vasıtasıyla bir kullanıcı kimliğiyle oturum başlatarak (Signing in) çok sayıda uygulamaya / servise erişim sağlanabilmekte. Authorization (yetkilendirme) sürecinin merkezinde kimlik doğrulama (authentication) işlemi için kullanılan bir SSO sunucusu yer alır2. İstemci bir kullanıcı adı ve şifresi ile SSO sunucusuna yönlendirilir, bilgilerin doğrulanmasının ardından oturum başlatılır ve bir session token (oturum anahtarı) oluşturulur. Oluşturulan bu anahtar ilişkili diğer uygulamalar ve/veya servislerle ortak bir şekilde kullanılabilmektedir. İlişkili uygulama kendisine iletilen token‘i kontrol eder1. Doğrulamada bir sorun olması durumunda işlem tekrarlanır5. Doğrulama başarılı ise giriş yetkisi sağlanır. Bu şekilde aynı kullanıcı adı ve şifresiyle pek çok uygulama ve servise güvenli bir şekilde erişim sağlanabilmektedir. Aşağıda yer verdiğim SSO for Web APIs başlıklı videoyu da incelemenizi tavsiye ederim.

Single Sign-On (SSO) tek bir kullanıcı kimliği ile ilişkili pek çok uygulama ve/veya servise erişim sağlayan bir konsept/çözüm olarak ele alınabilir. Bu maksatla, çeşitli dil ve platformlar için özelleştirilmiş alternatifler değerlendirilebilir. Aşağıda örnek olarak ele alınabilecek bazı örnekleri görebilirsiniz.

Uygulama Adı Lisans
Active Directory Federation Services / Azure Active Directory Lisanslı
Auth0 Lisanslı
Central Authentication Service Açık Kaynak
IBM Enterprise Identity Mapping Ücretsiz
JBoss SSO Ücretsiz
Okta Lisanslı

SSO’da ise X uygulamasına giriş yapıldığında SSO server üzerinden işlemler (token oluşturma ve kontrolü, cookie işlemleri gibi) gerçekleştirilir. Bu işlemin gerçekleştirilmesinin ardından X uygulamasına giriş sağlanır. Y uygulamasına giriş yapılmak istendiğinde yine SSO server üzerinden işlemler gerçekleştirilir; cookie içeriğindeki token kontrol edilir ve doğrulama sağlanırsa uygulama girişi gerçekleştirilir.

İleri Okumalar

  1. Web Servislerinde Single-Sign-On ile Yetkilendirme
  2. .NET’te Single Sign-On (SSO)
  3. SSO (Single Sign-On) Nedir?