Foundations·22 Mar 2021·20 min read·Güncellendi: 15 Jul 2026

SAML (Security Assertion Markup Language) Nedir?

SAML, kimlik sağlayıcının (IdP - Identity Provider), doğrulanmış kullanıcı bilgilerini servis sağlayıcıya ileten açık bir iletişim standardıdır.

SAML (Security Assertion Markup Language) Nedir?

SAML, kimlik sağlayıcının (IdP - Identity Provider) doğruladığı kullanıcı bilgilerini servis sağlayıcıya ileten açık bir iletişim standardıdır. Tek oturum açma (SSO - Single Sign-On) işlemleri için vazgeçilmez iletişim yapılarının başında gelir.

İletişim dili ve yapısı olarak XML'i kullanır. Bütün veriyi veya verinin bir kısmını şifreleyerek, IdP ve SP arasında ortak bir sertifika ile iletişimi ve veri bütünlüğünü garanti altına alır.

Bu iletişim standardını detaylı bir şekilde açıklamadan önce, konsept olarak kullanmış olduğu terimlerden biraz bahsedelim.

Identity Provider (IdP) - Kimlik Sağlayıcı

SAML'da her zaman bir IdP ve bir de SP vardır. Bu roldeki taraf kimliği doğrular, hazırladığı veriyi imzalayarak SP'ye iletir. Bu imzalama işlemini bir sertifika ile gerçekleştirir. Bu sertifikanın herkes tarafından okunabilir halini (Public Key) öncesinde SP ile paylaşır.

Burada bir imzalama işleminden bahsediyoruz, fakat bu opsiyoneldir. IdP ve SP aralarında anlaşıp bu iletişimin imzasız olmasını isteyebilir. Tabii ki bu, kesinlikle önerdiğimiz bir yöntem değildir. İmzalı olmayan bir iletişim başkaları tarafından kopyalanıp yeniden oluşturulabilir.

IdP'nin oluşturduğu verinin içerisinde kullanıcıya ait kullanıcı adı, ad, soyad, e-posta adresi gibi bilgiler olabilir. Fakat kesinlikle parola gibi bilgiler bulunmaz.

IdP bu bilgiyi, yine aralarında anlaştıkları bir adrese iletir. Bu adresin SAML'daki karşılığı Assertion Consumer URL olarak bilinir. IdP, bilgiyi SP'ye ilettikten sonra IdP'nin görevi biter.

İlerleyen kısımlarda IdP Initiated ve SP Initiated kavramlarından da bahsedeceğiz.

Service Provider (SP) - Servis Sağlayıcı

SP ise IdP'nin gönderdiği kimlik verisinin öncelikle belirli gereksinimleri karşılayıp karşılamadığını kontrol eder. Sonrasında içerisinde bulunan kullanıcı bilgileri ile yapması gereken işleme karar verir ve kullanıcıyı duruma göre içeri alır.

Burada SP'nin yapmakla görevli olduğu şeylerden birisi, veriyi okumuş olsa da içerdiği verinin imzasını sertifika ile kontrol etmektir. Eğer veri sertifika imzasına uymuyorsa kesinlikle kullanıcıyı içeri almamalıdır.

SP ile IdP arasında karşılaşılan birçok temel problem olabilir. Bu problemleri bertaraf etmenin ve izlemenin birincil yolu, kullandığınız dile uygun, kendini ispatlamış SAML kütüphanelerini kullanmaktır.

Gelen veri içerisinde, SP'nin kullanıcıyı içeri alması için gereken bütün bilgi bulunur.

İletişim Sertifikası

İletişim sertifikası, bir private (özel) ve bir public (genel) anahtar ile çalışan bir yapıdır. Bu yapıda private key ile imzalanan bir veri, public key ile doğrulanabilir.

Bu noktada iletişimi düşündüğümüzde, "gönderilen veri imzalanır" derken private key ile oluşturulan ve public key ile doğrulanabilen bir imza verisinden bahsediyoruz. Public key'i SP'ye verdiğimiz senaryoda SP, gönderilen bilginin doğrulamasını yaparak bu bilgiyi gerçekten IdP mi göndermiş, bunu anlayabiliyor.

IdP Initiated ve SP Initiated

IdP ve SP arasındaki iletişimi anlatırken dikkat ederseniz hep IdP'den SP'ye bilgi akışı olarak anlattık. Burada aslında iletişimi hangi tarafın başlattığı çok önemli. Bu terimler de birincil olarak bunu anlatıyor. IdP Initiated, IdP tarafından başlatılan iletişimi; SP Initiated ise SP tarafından başlatılan iletişimi ifade ediyor.

İletişim IdP tarafından başlatıldığında tek taraflı bir iletişim oluyor. Çünkü hazırlanmış ve kullanıcıya iletilecek bilgi zaten IdP tarafından oluşturulduğu için, SP'nin "bana bu veriyi hazırla" demesine gerek kalmıyor. Haliyle IdP, hazır bilgiyi doğrudan SP'ye daha önce belirtmiş olduğumuz Assertion Consumer URL üzerinden gönderiyor. Bu gönderim tabii ki basit HTTP metotları üzerinden oluyor.

Bu iletişim SP üzerinden başlatıldığında ise öncelikle SP, niyetini IdP'ye bildiriyor (Intent). Bu niyete göre de IdP, SP'ye gereken cevabı dönüyor. Dikkat ederseniz IdP tarafında doğrudan iletişim varken, SP tarafında önce niyeti bildiren bir istek, sonrasında ise IdP'nin döndüğü cevap ikinci istek olarak var.

Single Sign-On

SAML'ı incelerken karşınıza çokça Single Sign-On (SSO) konusu çıkacaktır. Bunun sebebi, SAML'ın çoğunlukla SSO işlemi için kullanılan oturum mekanizmalarından biri olmasıdır. En büyük faydalarından biri, kullanıcıyı tekrar tekrar oturum açma zahmetinden kurtararak ciddi bir zaman kazandırmasıdır. SSO ile kullanıcı aynı zamanda hangi uygulamadan oturum açtığını (tekilleştirilmiş oturum açma ekranı) bilir. Güvenmesi gereken, kullanıcı adı ve parolasını girmesi gereken tek ekran vardır. Bu bilgileri tekrar tekrar farklı uygulamalara girerek oluşan güvenlik zafiyetlerinin önüne geçmiş olursunuz.

Günümüzde SAML 2.0, özellikle kurumsal uygulamalarda hâlâ en yaygın SSO standartlarından biridir. Modern web ve mobil uygulamalarda ise aynı ihtiyacı OpenID Connect (OIDC) gibi daha yeni protokoller de karşılamaktadır; birçok kimlik sağlayıcı her iki standardı birlikte destekler.

Örneklerle Bir SAML Entegrasyonu

Konuyu daha iyi irdelemek için, bir örnek ile SAML entegrasyonunun nasıl yapılabileceğine bakalım.

Biz örneği Monosign üzerinden gerçekleştireceğiz. Sizler de benzer ayarları kullanarak, kullanmakta olduğunuz IdP ile bu entegrasyonu gerçekleştirebilirsiniz.

SP için ise Workplace uygulamasını kullanacağız (Workplace, iş yerleri için Facebook tarafından hazırlanan ve SAML desteği olan bir platform). Siz de örnek olarak SAML destekleyen herhangi bir SP kullanabilirsiniz.

Monosign - (IdP) Üzerinde Bir Uygulama Oluşturmak

Monosign bize uygulamalarımızı hızlıca oluşturabileceğimiz ekranlar sunuyor. Ben bu ekranlar üzerinden uygulamamı tanımlama işlemini gerçekleştireceğim. Monosign'da tanımladığım uygulamayı aynı zamanda uygulamalar ekranımdan da görüntüleyip, tek bir tıklama ile yeniden kullanıcı adı ve parola yazmadan erişebiliyorum (IdP Initiated - Single Sign-On).

alt text

Uygulama Listesinde Uygulamayı Görmek

Oluşturduğumuz uygulamayı doğrudan listede görebiliriz.

alt text

Monosign - Identity Provider Ayarları

SAML ile yapabileceğiniz çok fazla ayar mevcuttur. Bu noktada minimal bir SAML çözümü kullanmak belki ilk başta işinizi görecektir, fakat sonrasında sizi ciddi manada bloklayacaktır.

Aşağıda Monosign'ın SAML için karşınıza çıkardığı ayarların bir kısmını görüntüleyebilirsiniz.

alt text

Kaynaklar

SAML ile alakalı özelliklerin tamamına aşağıdaki RFC'yi inceleyerek ulaşabilirsiniz.

SAML'ın RFC'sine https://tools.ietf.org/html/rfc7522 adresinden erişebilirsiniz.

SAML destekli uygulamalarınızı Monosign ile hızlı bir şekilde entegre edebilirsiniz

Tagsdevelopmentsamlmonosign

Kimlikleri doğru şekilde
yönetmeye hazır mısınız?

Beş dakikadan kısa sürede tam donanımlı bir deneme ortamı kurun. Kredi kartı yok, satış engeli yok.