Single Sign-On (SSO), modern web uygulamalarında, kullanıcılarına birden fazla hizmette kesintisiz bir kimlik doğrulama deneyimi sunan kritik bir özellik haline gelmiştir. SSO uygularken, doğru protokolü seçmek, güvenlik, ölçeklenebilirlik ve kullanım kolaylığı sağlamak için önemlidir. SSO için kullanılan üç önemli protokol OAuth2, OIDC (OpenID Connect) ve SAML (Security Assertion Markup Language)'dir. Bu blogda, bu protokolleri, farklılıklarını ve SSO uygulamak için her birinin ne zaman kullanılacağını inceleyeceğiz.
SSO Nedir?
Single Sign-On (SSO), bir kullanıcının tek bir oturum açma kimlik bilgisiyle birden fazla uygulamaya veya hizmete erişmesini sağlayan bir kimlik doğrulama sürecidir. Bu, birden fazla şifreyi hatırlama ihtiyacını azaltarak kullanıcı deneyimini iyileştirmekle kalmaz, aynı zamanda kimlik doğrulamayı merkezileştirerek güvenliği de artırır.
OIDC, OAuth2 ve SAML'ye Genel Bakış
1. OpenID Connect (OIDC)
OIDC (OpenID Connect), OAuth2 üzerine inşa edilmiş bir kimlik katmanıdır. Kullanıcıları doğrulamak ve kimlik bilgilerini elde etmek için standartlaştırılmış bir yol sağlar, bu da onu SSO için popüler bir seçim haline getirir.
Temel Özellikler:
- Kimlik Doğrulama Protokolü: Kullanıcı kimlik doğrulamasını içerecek şekilde OAuth2'yi genişletir.
- ID Token'ları: Kullanıcı kimlik bilgilerini içeren ID token'ları yayınlar.
- UserInfo Uç Noktası: Ek kullanıcı bilgilerinin alınmasını sağlar.
İş Akışı:
- Kullanıcı, yetkilendirme sunucusu ile kimlik doğrulaması yapar.
- Yetkilendirme sunucusu bir ID token'ı ve bir erişim token'ı yayınlar.
- İstemci, kullanıcının kimliğini doğrulamak için ID token'ını doğrular.
- İstemci, UserInfo uç noktasından ek kullanıcı bilgileri istemek için erişim token'ını kullanabilir.
2. OAuth2
OAuth2 (Open Authorization), üçüncü taraf uygulamaların, kimlik bilgilerini ifşa etmeden bir kullanıcının kaynaklarına erişmesine izin veren, yaygın olarak kullanılan bir yetkilendirme çerçevesidir. OAuth2 öncelikle yetkilendirme için kullanılsa da, diğer protokollerle birlikte SSO için de kullanılabilir.
Temel Özellikler:
- Yetkilendirme Çerçevesi: Kaynaklara erişim izni vermek için tasarlanmıştır.
- Token'lar: İzin vermek için erişim token'ları kullanır.
- Akışlar: Çeşitli yetkilendirme akışlarını destekler (örneğin, yetkilendirme kodu, örtülü, istemci kimlik bilgileri).
İş Akışı:
- Kullanıcı, yetkilendirme sunucusu ile kimlik doğrulaması yapar.
- İstemci uygulaması bir yetkilendirme kodu alır.
- İstemci, erişim token'ı için yetkilendirme kodunu değiştirir.
- İstemci, kullanıcı adına kaynaklara erişmek için erişim token'ını kullanır.
3. SAML
SAML (Security Assertion Markup Language), hem kimlik doğrulama hem de yetkilendirme için kullanılan XML tabanlı bir protokoldür. SSO ve federasyon kimlik yönetimi için kurumsal ortamlarda yaygın olarak kullanılır.
Temel Özellikler:
- XML Tabanlı: Mesaj biçimlendirmesi için XML kullanır.
- Assertion'lar: Kimlik doğrulama ve yetkilendirme için assertion'lar sağlar.
- Federasyon: Farklı organizasyonlar arasında kimlik federasyonunu destekler.
İş Akışı:
- Kullanıcı, bir hizmet sağlayıcıdan (SP) erişim talep eder.
- SP, kimlik doğrulaması için kullanıcıyı kimlik sağlayıcıya (IdP) yönlendirir.
- Kullanıcı, IdP ile kimlik doğrulaması yapar.
- IdP, SP'ye bir SAML assertion'ı yayınlar.
- SP, assertion'ı doğrular ve kullanıcıya erişim izni verir.
SSO için OAuth2, OIDC ve SAML'yi Karşılaştırma
1. Kimlik Doğrulama ve Yetkilendirme
- OIDC: Özellikle kimlik doğrulama için tasarlanmıştır ve OAuth2'yi genişletir. Kullanıcı kimlik doğrulamasının gerekli olduğu SSO için idealdir.
- OAuth2: Öncelikli olarak bir yetkilendirme çerçevesidir. SSO için kullanılabilir ancak kimlik doğrulama için ek katmanlar gerektirir.
- SAML: Hem kimlik doğrulama hem de yetkilendirme sağlar. Kurumsal düzeyde SSO ve kimlik federasyonu için uygundur.
2. Token Formatı
- OIDC: Kullanıcı kimlik bilgilerini içeren JWT formatında ID token'ları kullanır.
- OAuth2: Genellikle JWT formatında erişim token'ları kullanır, ancak token'lar öncelikle yetkilendirme içindir.
- SAML: Hem kimlik doğrulama hem de yetkilendirme için XML tabanlı assertion'lar kullanır.
3. Karmaşıklık ve Kullanım Alanları
- OIDC: ID token'ları ve kullanıcı bilgileri uç noktaları ile karmaşıklık ekler. Güçlü kimlik doğrulaması ve kullanıcı kimlik yönetimi gerektiren modern web ve mobil uygulamalar için en iyisidir.
- OAuth2: Nispeten basit ve esnektir. API erişim delegasyonu gibi, yetkilendirmenin öncelikli olduğu senaryolar için en iyisidir.
- SAML: XML biçimlendirmesi ve kurumsal düzeydeki özellikler nedeniyle daha karmaşıktır. Birden fazla organizasyon arasında SSO ve kimlik federasyonu gerektiren kurumsal ortamlar için en iyisidir.
4. Entegrasyon ve Ekosistem
- OIDC: Yaygın olarak benimsenmesinden yararlanan, belirli kimlik yönetimi özellikleri ekleyen OAuth2 üzerine kurulmuştur.
- OAuth2: Farklı platformlar ve kitaplıklar arasında kapsamlı destekle yaygın olarak benimsenmiştir.
- SAML: Kurumsal uygulamalar ve kimlik sağlayıcılarından güçlü destekle, ağırlıklı olarak kurumsal ortamlarda kullanılır.
Her Protokol Ne Zaman Kullanılır?
OIDC
- Kullanıcı kimlik doğrulaması ve kimlik yönetimi ile güçlü bir SSO çözümüne ihtiyacınız olduğunda.
- Modern web ve mobil uygulamalar için idealdir.
- Güçlü güvenlik özellikleri ile kesintisiz bir kullanıcı deneyimi sağlar.
OAuth2
- Kimlik bilgilerini ifşa etmeden kullanıcı kaynaklarına yetkilendirilmiş erişime ihtiyacınız olduğunda.
- API erişimi ve üçüncü taraf entegrasyonları için uygundur.
- Kimlik doğrulama özelliklerinin eksikliği nedeniyle tek başına bir SSO çözümü olarak ideal değildir.
SAML
- Kurumsal düzeyde SSO ve kimlik federasyonuna ihtiyacınız olduğunda.
- Birden fazla dahili uygulamaya ve harici ortaklığa sahip organizasyonlar için uygundur.
- XML tabanlı protokollerin zaten kullanıldığı ortamlar için en iyisidir.
Apidog'un SSO'su ile API Yönetimini Geliştirme
Apidog'un Single Sign-On (SSO) özelliği, kullanıcıların birden fazla API projesinde tek bir kimlik bilgisi seti kullanarak kimlik doğrulaması yapmasına izin vererek güvenliği artırır ve kullanıcı yönetimini kolaylaştırır. SSO, organizasyonlar için erişim kontrolünü basitleştirir, birden fazla şifre ihtiyacını azaltır ve güvenlik ihlali riskini azaltır. Apidog, Microsoft Entra ID gibi SAML 2.0 ile uyumlu çeşitli SSO sağlayıcılarını destekleyerek kesintisiz bir entegrasyon süreci sağlar. Bu özellik, özellikle ekipler ve kuruluşlar için faydalıdır, daha kolay işbirliği ve yönetim sağlar.


Sonuç
SSO için doğru protokolü seçmek, özel ihtiyaçlarınıza ve ortamınıza bağlıdır. OAuth2, yetkilendirme ve erişim delegasyonu için mükemmeldir, OIDC ise güçlü kimlik doğrulama ve kimlik yönetimi sağlamak için OAuth2 üzerine kuruludur. SAML, kurumsal düzeyde SSO ve federasyon kimlik yönetimi için başvurulacak çözümdür.
Geliştiriciler ve BT profesyonelleri için, bu protokolleri ve farklılıklarını anlamak, güvenli ve verimli SSO çözümleri uygulamak için çok önemlidir. Apidog, şirketlerin API projeleri üzerinde izin kontrolünü yönetmeleri için SSO çözümleri sunarak, şirketin varlıklarına ek güvenlik sağlar. İster web uygulamaları, ister mobil uygulamalar veya kurumsal sistemler üzerinde çalışıyor olun, uygun protokolü seçmek ve doğru araçlardan yararlanmak hem güvenliği hem de kullanıcı deneyimini artıracaktır.