SAML ve OIDC Arasındaki Farklar Nelerdir?
Bu makalede, SAML ve OIDC protokollerine genel bir bakış sunuyoruz, bunların tipik kimlik doğrulama akışları ile birlikte. Her bir protokolün belirgin farklarını, artılarını ve eksilerini karşılaştırıyoruz. Ayrıca, potansiyel kullanıcı senaryolarına dayanarak bu iki protokol arasında seçim yapma konusunda rehberlik sunuyoruz.
OpenID Connect (OIDC) ve Security Assertion Markup Language (SAML), Kimlik Sağlayıcıların (IdP'ler) kullanıcı kimlik doğrulama ve erişim kontrolünü uygulamasına olanak tanıyan kimlik doğrulama protokolleridir. Her bir protokol, kimliği doğrulanmış kullanıcıların kimliğini sürdürmek için kendi mekanizmasını tanımlar; bu kimlik daha sonra korunan uygulamalara erişimi vermek veya reddetmek için kullanılır.
SAML ve OIDC Nedir?
IdP'ler kullanıcı kimlik bilgileri veritabanlarını tutar. Hizmet Sağlayıcılar (SP'ler) kullanıcıları doğrulamak için bu bilgilere güvenir, bazen tek bir kimlik doğrulamanın (tek oturum açma) birden fazla uygulama arasında kullanılmasını sağlar. OIDC ve SAML, kullanıcı kimliğiyle ilgili bilgilerin bu iki taraf arasında nasıl aktığını tanımlayan standartlardır. Nihai hedefleri aynıdır: kullanıcı kimliği doğrulama. Ancak, bu hedefe ulaşmak için temel yaklaşımları farklıdır.
SAML
2005'ten beri SAML 2.0 bu standardın mevcut versiyonudur. Kimlik bilgilerini, istekleri ve yanıtları biçimlendirmek için XML kullanır. XML, belgeleri hem insanlar hem de bilgisayarlar tarafından anlaşılır bir şekilde biçimlendiren olgun bir standarttır. XML kodlu bilgileri iletmek veya almak için temel SOAP veya HTTP isteklerini kullanır. SAML protokolü tarafından tanımlandığı gibi, kimlik bilgisi talep eden servis Hizmet Sağlayıcıdır (SP).
Tipik bir SAML kimlik doğrulama sürecini tanıtmadan önce, SAML kimlik doğrulamanın dayandığı unsurları anlamalıyız. IdP ve SP birbirini tanımadan ve kimlik doğrulama sürecini tamamlamadan önce, genellikle XML ile biçimlendirilmiş meta veriler aracılığıyla "gerekli bilgileri" "değiş tokuş etmeleri" gerekir. Değiş tokuş edilen bilgiler şunları içerir:
- İdP ve SP kendi özel ve açık anahtar çiftlerini üreterek bunları imzalama veya iletişimleri şifreleme için değiş tokuş eder. Ağ iletişim güvenliğindeki gelişmelerle, çoğu senaryoda artık sadece istek imzalamak yeterlidir, şifreleme adımı atlanır.
- SP’nin Kimlik Sağlayıcısına SAML kimlik doğrulama istekleri göndermek ve Kimlik Sağlayıcısından gelen kimlik doğrulama isteklerine yanıt olarak SAML beyanlarını almak için kullanılan uç noktalar.
- İdP’nin, kimlik doğrulama tamamlandıktan sonra SP’ye gerekli kullanıcı bilgilerini iletmek için desteklediği XML öznitelik biçimleri.
IdP ve SP yukarıda belirtilen bilgilerin farkına vardıklarında, yetkilendirme sürecine devam edebilirler (tipik bir SP başlatma kimlik doğrulama akışı):
OIDC
OIDC, OAuth 2.0 çerçevesini geliştiren çağdaş bir protokoldür. Veri yükleri oluşturmak için JSON tabanlı Web Jetonları (JWT) kullanır. JWT'ler, varlıklar arasında taleplerin güvenli değişimi ve temsilini belirleyen yerleşik bir endüstri normudur. Bu talepler, esasen şifrelenmiş kullanıcı verileri, kimlik doğrulama ve yönetim için çok önemlidir. OIDC, veri iletimi için yaygın olarak bulunan HTTPS'yi kullanır.
Bilindiği gibi, OIDC protokolü, yetkilendirme kodu akışı, dolaylı akış ve hibrit akış dahil olmak üzere çeşitli farklı akışları destekler. Aşağıdaki örnekte, bunlar içinde en güvenli ve tipik olanını ele alacağız: yetkilendirme kodu akışı. Bu, ayrıca Logto tarafından da kullanılan akıştır.
OIDC ve SAML'nin Ayırt Edici Özellikleri
- Daha yeni bir gelişme olması nedeniyle, OIDC modern uygulama kimlik doğrulaması için daha uygundur; bu, eski SAML standardına göre bir avantajdır.
- Tarihsel olarak SAML, OIDC'den daha önce geliştirilmiş olup birçok köklü kurumsal sisteme entegre edilmiştir.
- SAML'nin daha hantal XML belgelerine karşı, OIDC'nin JWT’leri daha hafif ve işlem açısından daha kullanıcı dostudur.
- OIDC'nin yapılandırılması genellikle SAML'ye kıyasla daha kolaydır.
- OIDC'nin önemli bir özelliği, çeşitli izinleri yönetmelerine olanak tanıyan "alanlar"ı tanımlamasıdır. Uygulamalar, IdP'lerden kullanıcı onayı ile verilen belirli izinler talep edebilir. Bu OIDC özelliği IdP'lere izinler üzerinde ayrıntılı kontrol sağlar.
OIDC ve SAML Arasında Nasıl Seçim Yapılmalıdır?
Hem OIDC hem de SAML, her biri kendi benzersiz güçlü yönleriyle sağlam kimlik doğrulama sistemleridir. Seçim, kuruluşunuzun belirli ihtiyaçlarına bağlıdır.
- Hızlı ve etkili kimlik platformu dağıtımı için, OIDC SAML'ye tercih edilir. OIDC'nin uygulanması daha basittir ve SAML'nin meta veri ayrıştırma, kimlik doğrulama isteği işleme ve SAML beyan analizi için gerektirdiği karmaşık XML işlemleri engellenir.
- OIDC, geniş API etkileşimleri ve karmaşık izin mekanizmaları içeren ortamlar için idealdir ve izinler üzerinde daha esnek ve etkin bir kontrol sağlar ve geliştiriciler için daha üstün bir deneyim sunar.
- SAML tabanlı köklü sistemlerle entegrasyon sağlanırken, SAML'nin seçilmesi sistemler arası birlikte çalışabilirliği daha sorunsuz hale getirir ve farklı protokolleri köprülemek için gereken çabayı azaltır.
Piyasada İyi Çözümler Mevcut mu?
Logto, geliştiriciler arasında popüler bir kimlik çözümüdür ve yakın zamanda Kurumsal SSO işlevselliğini tanıtmıştır. Hem SAML hem de OIDC protokollerine destek sunar ve Google Workspace ve Microsoft Entra ID (eski adıyla Azure AD) gibi ana akım IdP'ler için hazır entegrasyonlar sağlar. Logto ile SSO'yu kendi başınıza uygulamanın karmaşıklıklarını aşabilirsiniz. Kimlik sisteminizde SSO desteğini etkinleştiren birkaç basit yapılandırma adımı, iş ihtiyaçlarınızı karşılamak için uygun protokolü seçmenize olanak tanır.