- SAML (Single Assertion Markup Language), XML biçimindeki güvenlikle ilgili mesajların değişimi için kuralları tanımlayan bir standarttır
- Esas olarak üç veya daha fazla bağımsız varlık arasında mesaj alışverişi için kullanılır
- Tipik senaryoda, farklı şirketler tarafından yapılmış iki yazılım sistemi ve bir kullanıcı yer alır
- İki sistemin kullanıcıyla ilgili bilgi alışverişi yapması gerekir
- Özel bir entegrasyon da yapılabilir, ancak bakımını sürdürmek zordur
- SAML, sistemlerin aynı kurallara uymasını sağlayarak karmaşık entegrasyon işlerini basitleştirir
SAML mesaj formatı
- SAML mesajları XML biçimindedir
- Mesaj sözdizimini tanımlar ve mesaj içeriğinin güvenli biçimde nasıl işleneceğini belirtir
<Response> etiketi alındığında <Assertion> etiketinin aranması gerektiği gibi şeyleri söyleyebilir
- Dijital imzanın nasıl göründüğü ve güvenlik sorunlarından kaçınmak için mesajın nasıl işlenmesi gerektiği konusunda rehberlik sağlar
SAML'in esnekliği
- SAML, esnekliği öne çıkaracak şekilde tasarlanmıştır. İlke olarak SAML ile çok şey yapılabilir, ancak bu esneklik karmaşıklığa da yol açar
- SAML spesifikasyonunda sayısız istisna vardır; çok sayıda if durumu ve örnek içerdiği için edge case'ler ekler
- SAML eski olduğu için bazı kişiler bu esnekliği kullanır
- Gerçek üretim ortamlarında, özellikle legacy sistemlerde, SAML bazen alışılmadık davranışlar gösterebilir
- Çoğu durumda yalnızca SAML'in küçük bir alt kümesine odaklanmak hayatı kolaylaştırır
SAML'in pratikte kullanım amacı
- SAML çoğunlukla Single Sign-On (SSO) için kullanılır
- SAML birkaç tuhaf SSO türü tanımlar, ancak genel olarak Web Browser SSO Profile kullanılır
- Son kullanıcı önce merkezi bir sistemde kimliğini doğrular, ardından istediği yazılım uygulamasına erişir
- Kullanıcı uygulamaya doğrudan kimlik doğrulaması yapmaz
- Örneğin Okta kullanarak e-postaya eriştiyseniz, Web Browser SSO Profile kullanmışsınızdır
SSO ile ilişkili varlıklar
- SSO'da üç taraf yer alır:
- Kullanıcı: uygulamayı kullanmak isteyen kişi
- Hizmet sağlayıcı (SP): uygulamanın kendisi
- Kimlik sağlayıcı (IDP): kullanıcının kimlik doğrulaması için kullandığı merkezi hizmet
- Her müşterinin IDP'si bir veritabanı gibi düşünülebilir. İnsanlarla ilgili verileri takip eder
- Şirketler genellikle kimlik sağlayıcıyı kullanarak çalışanları departmanlara atar ve çeşitli yetkiler verir
- Bir kullanıcıyı SAML ile her giriş yaptırdığınızda IDP'den bilgi çekmeniz gerekir. SSO'da çoğunlukla IDP'ye kullanıcının kimliğini doğrulamasını sorarsınız
- IDP ile önceden yapılandırılmış bir güven ilişkisi gerekir
- SAML SSO kullanan her müşterinin uygulamada kendi ayarlarının yapılması gerekir
- Ancak IDP ile doğrudan mesaj alışverişi yapılmaz. SAML SSO'da hizmet sağlayıcı ile kimlik sağlayıcı, kullanıcının tarayıcısı üzerinden iletişim kurar
SAML varlıkları arasındaki etkileşim şekli
- Tipik bir SAML SSO süreci:
- Kullanıcı web tarayıcısında uygulamanın bir bölümüne erişmeye çalışır
- Kullanıcının geçerli bir güvenlik bağlamına sahip olup olmadığı kontrol edilir
- Kullanıcının geçerli bir güvenlik bağlamı olmadığı için giriş sayfası gösterilir
- Kullanıcı bazı bilgileri (örneğin e-posta adresi) girer; bu bilgi uygun giriş yöntemini belirlemek için kullanılır
- Kullanıcı IDP'nin web adresine yönlendirilir ve kullanıcının tarayıcısı üzerinden IDP'ye bir SAML mesajı iletilir
- IDP, kullanıcıdan kimlik bilgilerini isteyen bir ekran gösterir. Kullanıcı başarıyla kimlik doğrulamasından geçer
- IDP, kullanıcının kimlik doğrulamasına ilişkin bilgileri taşıyan bir SAML mesajıyla kullanıcıyı yeniden uygulamaya yönlendirir
- SAML mesajı işlenir ve kullanıcı için bir güvenlik bağlamı oluşturulması gerektiğine karar verilir
- Kullanıcıya uygulamanın istediği bölümüne erişim izni verilir
- SAML SSO süreci kimlik sağlayıcı tarafından da başlatılabilir
- Bu durumda bir kimlik doğrulama isteği göndermeden kimlik doğrulama yanıtı alırsınız
- SAML SSO desteği uygularken IDP tarafından başlatılan SSO'ya hazırlıklı olmalısınız
SAML'de değiş tokuş edilen mesajlar
- SAML SSO'da esas olarak iki mesaj önemlidir
- Hizmet sağlayıcıdan IDP'ye giden mesaja SAML isteği (
request) denir
- IDP'den hizmet sağlayıcıya dönen mesaja SAML yanıtı (
response) denir
- SAML isteği aslında o kadar karmaşık değildir. XML'i HTTP yönlendirmesi üzerinden göndermek yeterlidir
- IDP'nin orijinal istekle bağlantılı
<Response> paylaşabilmesi için <AuthnRequest> etiketine bir ID eklenir
- Kim olduğunuzu belirtmek için
<Issuer> etiketi içine alınmış veri de IDP'ye gönderilir
- SAML yanıtı daha zordur. Genellikle POST ile gönderilir
<Response>, kavramsal olarak birkaç <Assertion> etiketini kapsar
<Assertion>, kullanıcıyla ilgili claim'leri (kim olduğu, IDP üzerinde nasıl kimlik doğruladığı vb.) kapsar
- Assertion işlenerek kullanıcının oturum açtırılıp açtırılmayacağına karar verilir
Dikkat edilmesi gerekenler
- Burada pek çok ayrıntı, özellikle güvenlik açısından önemli olanlar, atlanmıştır
- SAML'e kişisel ilginiz yoksa veya profesyonel olarak derinlemesine incelemek için bir nedeniniz yoksa, SAML tabanlı girişi kendiniz uygulamanız önerilmez. Bu bir zaman kaybıdır
- SAML'i mümkün olduğunca hızlı kurmak istiyorsanız, SAML'i soyutlayan açık kaynaklı SSOReady sunuyoruz. Size çok fazla zaman ve sıkıntı kazandıracaktır
Henüz yorum yok.