SAML ve OIDC
SAML ve OIDC, SSO endüstrisinde en popüler iki kimlik doğrulama protokolüdür. Bu makale, SAML ve OIDC'nin mimarisi ve kullanım senaryoları açısından karşılaştırmasını yapacaktır.
SAML nedir?
SAML (Güvenlik Talebi Biçimlendirme Dili), kimlik doğrulama ve yetkilendirme verilerini farklı taraflar arasında, özellikle kimlik sağlayıcısı (IdP) ve hizmet sağlayıcısı (SP) arasında değiştirmek için XML tabanlı açık bir standarttır. Web tabanlı SSO (Tek Oturum Açma) sağlar, böylece kullanıcıların birden fazla uygulamaya erişmek için bir kez kimlik doğrulaması yapmasına olanak tanır. SAML, uzun süredir var olan olgun bir protokoldür ve işletmeler tarafından geniş çapta benimsenmiştir. Salesforce, Workday ve Microsoft Azure AD gibi en popüler SaaS platformlarının hepsi SAML SSO'yu destekler.
SAML bileşenleri
- Kimlik sağlayıcı (IdP): Kullanıcıları kimlik doğrulayan ve hizmet sağlayıcılara kimlik bilgileri sağlayan varlık.
- Hizmet sağlayıcı (SP): Kullanıcılara hizmet sağlayan ve kullanıcıları kimlik doğrulamak için kimlik sağlayıcısına güvenen varlık.
- SAML beyanları: Kullanıcının kimlik doğrulama ve yetkilendirme detaylarını taşıyan XML tabanlı belgeler. Bu, kimlik doğrulama bildirileri, öznitelik bildirileri ve yetkilendirme karar bildirilerini içerir.
- SAML protokolü: IdP ve SP arasında SAML beyanlarının değişimi için mesaj formatını ve kuralları tanımlar.
- SAML bağlamaları: SAML mesajlarının HTTP POST, HTTP Yönlendirme gibi farklı iletişim protokolleri üzerinden nasıl taşındığını tanımlar.
- SAML meta verileri: IdP ve SP'nin yapılandırma bilgilerini içeren XML tabanlı belgeler. Bu, güveni kurmak için kullanılan ortak anahtar, uç noktalar ve desteklenen bağlamaları içerir.
- Tek oturum açma uç noktası: SP'nin kullanıcıyı IdP ile kimlik doğrulamak için yönlendirdiği uç nokta.
- Beyan tüketici hizmeti (ACS) URL'si: Başarılı kimlik doğrulamanın ardından IdP'nin SAML beyanını gönderdiği uç nokta.
SAML nasıl çalışır?
- SP başlatılan SSO akışı:
- IdP başlatılan SSO akışı:
SAML'nin avantajları
- Olgun ve geniş ölçüde benimsenmiş: SAML, uzun süredir var olan ve işletmeler tarafından geniş çapta benimsenen olgun bir protokoldür.
- Standartlaştırılmış: SAML, OASIS tarafından korunan açık bir standart olup, farklı satıcılar arasında birlikte çalışabilirliği sağlar.
- SSO: SAML, kullanıcıların birden fazla uygulamaya erişmek için bir kez kimlik doğrulama yapmalarını sağlayarak web tabanlı SSO sağlar.
- Merkezi kullanıcı yönetimi: SAML, kuruluşların kullanıcı kimliklerini merkezi olarak yönetmesine ve güvenlik politikalarını tutarlı bir şekilde uygulamasına olanak tanır.
SAML'nin zorlukları
- Karmaşıklık: SAML, XML ve güvenlik kavramlarının derin bir anlayışını gerektiren karmaşık bir protokoldür.
- Performans: SAML mesajları XML tabanlı olabilir ve büyük boyutlu olabilir. XML teslimi ve ayrıştırılması, JSON Web Tokn (JWT) gibi token formatlarına kıyasla daha yavaş olabilir.
- Eski standart: SAML, OIDC'ye kıyasla daha eski bir standart olup daha az güvenli kabul edilir.
- Satıcıya bağımlılık: SAML, satıcıya özgü bir protokoldür ve satıcılar arasında geçiş yapmak zor olabilir.
OIDC nedir?
OIDC (OpenID Connect), OAuth 2.0 protokolü üzerinde bir kimlik katmanıdır. SAML'e benzer şekilde, OIDC de IdP ve SP arasında kimlik doğrulama ve yetkilendirme verileri değişimi için kullanılır.
SAML'e kıyasla, OIDC modern web ve mobil uygulamalar için popülerlik kazanmakta olan daha modern ve hafif bir protokoldür. OIDC, kimlik bilgilerini iletmek için JWT kullanır, bu da SAML beyanlarına kıyasla daha kompakt ve çalışması daha kolaydır. Özellikle tüketiciye yönelik uygulamalar ve API güvenliği için popülerdir.
OIDC bileşenleri
- Kimlik sağlayıcı (IdP): Kullanıcıları kimlik doğrulayan ve hizmet sağlayıcılara kimlik bilgileri sağlayan varlık.
- Bağlı taraf (RP): Kullanıcılara hizmet sağlayan ve kullanıcıları kimlik doğrulamak için kimlik sağlayıcısına güvenen varlık. Örn. web uygulamaları, mobil uygulamalar veya API'ler.
- OIDC tokenleri: Kullanıcının kimlik bilgilerini taşıyan tokenler.
- ID token: Kullanıcının kimlik bilgilerini içeren JWT formatlı token.
- Erişim tokeni: Korunan kaynaklara erişim izni veren JWT veya opak format token.
- Yenileme tokeni: Kullanıcıya yeniden kimlik doğrulama gerektirmeden yeni bir erişim tokeni almak için kullanılan token. RP'ye offline ve uzun süreli yetki verir.
- OIDC uç noktaları: Kimlik doğrulama ve token değişimi için kullanılan uç noktalar. En önemli uç noktalardan bazıları:
- Keşif uç noktası: RP'nin IdP'den genel OIDC yapılandırma bilgilerini alabileceği yer.
- Yetkilendirme uç noktası: RP'nin kimlik doğrulama isteği gönderdiği yer.
- Token uç noktası: RP'nin yetkilendirme sunucusundan token talep ettiği yer.
- Kullanıcı bilgisi uç noktası: RP'nin kullanıcının profil bilgilerini alabileceği yer.
- Kapsamlar: OIDC, RP'ye verilen erişim haklarını tanımlayan bir dizi standart kapsam tanımlar. Örn.
openid
,profile
,email
,address
gibi.
OIDC nasıl çalışır?
OIDC, farklı kullanım senaryoları için açıkça tasarlanmış birden fazla akış sağlar. İşte en yaygın iki OIDC akışı:
- Yetkilendirme kodu akışı:
Yetkilendirme kodu akışı, tüketiciye yönelik uygulamalarda OIDC'de en yaygın kullanılan akıştır.
- İstemci kimlik bilgileri akışı:
İstemci kimlik bilgileri akışı kullanıcı tabanlı olmayan (makineden makineye) kimlik doğrulama için kullanılabilir.
OIDC'nin avantajları
- Modern ve hafif: OIDC, JSON tabanlı JWT tokenleri kullanan modern bir protokoldür. Bu tokenler, XML tabanlı SAML beyanlarına göre daha kompakt ve kullanımı daha kolaydır.
- Tüketiciye yönelik uygulamalar: OIDC, özellikle tüketiciye yönelik uygulamalar ve API güvenliği için popülerdir.
- Uyumluluk: OAuth 2.0 üzerine kurulmuş olan OIDC, farklı platformlar, cihazlar ve platformlarla uyumludur.
- Güvenlik: OIDC, kullanıcı kimlik doğrulaması ve API koruması için daha güvenli bir yöntem sunar. Token incelemesi, token iptali, Kod Değişimi için Kanıt Anahtarı (PKCE) gibi çeşitli modern güvenlik özelliklerini içerir ve farklı güvenlik ihtiyaçlarına uyarlanmış farklı kimlik doğrulama akışlarını destekler.
- Kullanım kolaylığı: OIDC, SAML'e kıyasla daha basit uygulanabilir ve çalışabilir. Daha geliştirici dostudur ve birden fazla programlama dili ve platform için kapsamlı kütüphaneler ve SDK'lar sunar.
OIDC'nin zorlukları
- Token yönetimi: OIDC, kimlik doğrulama ve yetkilendirme için tokenlere güvenir. Güvenliği sağlamak için doğru token yönetim uygulamalarını gerektirir.
- Karmaşıklık: Temel kurulumlar için OIDC basit olsa da, esnekliği nedeniyle, gelişmiş özelleştirmeleri uygularken karmaşıklık ekleyebilir. Örn. özel iddialar, role dayalı erişim kontrolü (RBAC) gibi.
- Kabul: OIDC, özellikle kurumsal alanda SAML'e kıyasla hala nispeten yenidir. Bazı eski sistemler, SSO amaçları için hala SAML'e güvenebilir.
SAML ve OIDC Karşılaştırması
Özellik | SAML | OIDC |
---|---|---|
Token formatı | XML tabanlı SAML beyanları | JSON tabanlı JWT tokenleri |
Ana kullanım durumu | Kurumsal SSO, B2B entegrasyonları | Tüketiciye yönelik uygulamalar, API güvenliği |
Kullanım kolaylığı | Karmaşık, XML'i derinlemesine anlama gerektirir | Basit, JSON tabanlı, uygulanması kolay |
Kabul | İşletmeler tarafından yaygın olarak benimsenmiştir | Modern uygulamalar için giderek popülerleşiyor |
Güvenlik | Olgun ancak daha az güvenli kabul ediliyor | Modern ve daha güvenli |
Esneklik | Sınırlı, SSO kullanım durumları için tasarlanmıştır | Esnek, çeşitli kullanım durumlarını destekler |
SAML ve OIDC'nin Geleceği
Hem SAML hem de OIDC, kimlik doğrulama ve yetkilendirme amacıyla geniş çapta kullanılır.
SAML, kurumsal SSO ve B2B entegrasyonları için önemli bir yapı taşı olmaya devam etmektedir. Federasyon kimlik yönetimi konusundaki sağlam desteği ve kanıtlanmış geçmişi, özellikle eski sistemler ve büyük ölçekli kuruluşlar için geçerliliğini sağlamaktadır.
Öte yandan, OIDC, modern uygulamalarda güvenli ve ölçeklenebilir kimlik doğrulama talebiyle yönlendirilmeye devam etmektedir. Hafif doğası ve API'ler ve mikro hizmetlerle uyumu, onu bulut yerel ve dağıtık mimariler için bir köşe taşı yapar. Şifresiz kimlik doğrulama, biyometrik ve çok faktörlü kimlik doğrulama (MFA)'nın yükselişiyle, OIDC'nin ortaya çıkan teknolojilerle sorunsuz bir şekilde entegre edilmesi beklenmektedir, bu da yıllar boyunca geçerliliğini sağlamaktadır.