13 puan yazan xguru 2024-07-29 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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:
    1. Kullanıcı: uygulamayı kullanmak isteyen kişi
    2. Hizmet sağlayıcı (SP): uygulamanın kendisi
    3. 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:
    1. Kullanıcı web tarayıcısında uygulamanın bir bölümüne erişmeye çalışır
    2. Kullanıcının geçerli bir güvenlik bağlamına sahip olup olmadığı kontrol edilir
    3. Kullanıcının geçerli bir güvenlik bağlamı olmadığı için giriş sayfası gösterilir
    4. Kullanıcı bazı bilgileri (örneğin e-posta adresi) girer; bu bilgi uygun giriş yöntemini belirlemek için kullanılır
    5. Kullanıcı IDP'nin web adresine yönlendirilir ve kullanıcının tarayıcısı üzerinden IDP'ye bir SAML mesajı iletilir
    6. IDP, kullanıcıdan kimlik bilgilerini isteyen bir ekran gösterir. Kullanıcı başarıyla kimlik doğrulamasından geçer
    7. 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
    8. SAML mesajı işlenir ve kullanıcı için bir güvenlik bağlamı oluşturulması gerektiğine karar verilir
    9. 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.

Henüz yorum yok.