SAML (Security Assertion Markup Language), farklı alan adlarında çalışan uygulamalar arasında güvenli kimlik doğrulama ve yetkilendirme bilgisi aktarımı sağlayan bir XML tabanlı açık standarttır. SAML, özellikle tek oturum açma (SSO – Single Sign-On) çözümlerinin temelini oluşturur ve kullanıcıların birden fazla hizmete tek bir kimlik doğrulamasıyla erişmesini sağlar.
Temel Bileşenler ve İşleyiş
SAML mimarisi üç ana bileşenden oluşur:
- Kullanıcı (Subject): Kimlik bilgisi taşıyan kişidir.
- Kimlik Sağlayıcı (Identity Provider – IdP): Kullanıcının kimliğini doğrulayan sistemdir (ör. Active Directory Federation Services).
- Hizmet Sağlayıcı (Service Provider – SP): Kullanıcının erişmek istediği web hizmetidir (ör. e-posta uygulaması, intranet portalı).
İşleyiş Adımları (SSO Senaryosu)
- Kullanıcı, doğrudan hizmet sağlayıcıya erişmek ister.
- Hizmet sağlayıcı, kimlik sağlayıcıya yönlendirir.
- Kimlik sağlayıcı kullanıcıyı doğrular ve SAML assertion (doğrulama beyanı) oluşturur.
- Assertion, kullanıcı aracılığıyla hizmet sağlayıcıya iletilir.
- Hizmet sağlayıcı assertion’ı doğrular ve kullanıcıya oturum açar.
SAML Assertion (Beyan)
SAML’nin temel iletişim nesnesi assertion olarak adlandırılır. Assertion, üç temel türde veri içerir:
- Authentication Statement (Kimlik Doğrulama Beyanı): Kullanıcının ne zaman ve hangi yöntemle doğrulandığını belirtir.
- Attribute Statement (Nitelik Beyanı): Kullanıcıya ait ad, soyad, rol gibi bilgileri içerir.
- Authorization Decision Statement (Yetkilendirme Beyanı): Belirli bir kaynağa erişim iznini içerir (isteğe bağlıdır).
Assertion'lar XML dijital imza ile korunur ve genellikle kısa ömürlüdür (örneğin 5 dakika).
Avantajları ve Kullanım Alanları
Avantajları
- SSO kolaylığı: Birden fazla uygulamaya tek oturumla erişim sağlar.
- Platform bağımsızlık: Web tabanlı uygulamalar arasında birlikte çalışabilirlik sağlar.
- Güvenlik: XML imzaları ve HTTPS ile iletişim güvenli hale gelir.
- Merkezi kimlik yönetimi: Kullanıcılar tek noktadan yönetilir.
Kullanım Alanları
- Kurumsal uygulamalar: SAP, Salesforce, Office 365 gibi hizmetlere erişim
- Üniversiteler: Shibboleth tabanlı akademik kimlik federasyonları
- e-Devlet sistemleri: Tekil kimlikle çok sayıda devlet hizmetine erişim
- Bulut servis sağlayıcıları: AWS, Azure gibi platformlarda federasyon desteği
SAML 2.0 ile OAuth2 / OpenID Connect Karşılaştırması
- Kullanım Alanı:
- SAML 2.0, özellikle kurumsal ortamlarda ve tarayıcı tabanlı uygulamalarda tercih edilir (örneğin: e-posta sistemleri, intranet portalları).
- OAuth2 / OpenID Connect ise modern web uygulamaları ve mobil cihazlarla çalışan sistemlerde daha yaygındır.
- Veri Biçimi:
- SAML, XML tabanlı mesajlar ile çalışır.
- OAuth2 / OIDC, daha hafif ve geliştirici dostu olan JSON biçimini kullanır.
- Taşıma Protokolü:
- SAML genellikle HTTP POST veya HTTP Redirect ile iletim yapar.
- OAuth2 / OIDC, RESTful API’ler üzerinden JSON/HTTPS protokolünü kullanır.
- Oturum Yönetimi:
- SAML, özellikle kurumsal oturum senaryolarında güçlü ve ayrıntılı oturum yönetimi özellikleri sunar.
- OAuth2 / OIDC oturum yönetimi açısından daha esnektir, ancak belirli uygulamalarda geliştirici kontrolüne daha çok ihtiyaç duyar.
- Karmaşıklık:
- SAML, XML imzalama, sertifika doğrulama ve assertion işleme gibi işlemler nedeniyle daha karmaşık bir yapıya sahiptir.
- OAuth2 / OIDC, daha az karmaşıktır ve modern uygulamalar için daha hızlı uygulanabilirlik sunar.
Zorluklar ve Eleştiriler
- Karmaşık yapı: XML tabanlı olması ve imzalama işlemleri, uygulama entegrasyonunu zorlaştırabilir.
- Mobil uyumsuzluk: Mobil cihazlarla entegrasyonu zordur; bu nedenle modern sistemlerde OpenID Connect daha sık tercih edilir.
- Yönlendirme yönetimi: Kullanıcının doğru şekilde yönlendirilmesi ve assertion geçerliliği hassas yapılandırmalar gerektirir.
SAML, özellikle kurumsal ortamlarda yaygın biçimde kullanılan, güvenli ve merkezi kimlik doğrulama sistemlerinin temelini oluşturan olgun bir standarttır. Özellikle yüksek güvenlik gerektiren kurumsal uygulamalar, akademik federasyonlar ve e-devlet servisleri gibi alanlarda etkili çözümler sunar.