Security Assertion Markup Language
SAML (ang. Security Assertion Markup Language) - nazwa protokołu, zatwierdzonego przez OASIS (Organization for the Advancement of Structured Information Standards) i wykorzystywanego do pośredniczenia w uwierzytelnianiu i automatycznego przekazywania między systemami i aplikacjami informacji o uprawnieniach użytkowników. Protokół ten bazuje na standardzie XML. Najważniejszą cechą SAMLa jest próba rozwiązania problemu wielokrotnego logowania do stron WWW.
Specyfikacja SAMLa wyróżnia trzy główne role: Podmiot (the principal), Dostawca Tożsamości (the Identity Provider, IdP) oraz Dostawca Treści (the Service Provider, SP).
Najważniejszym zastosowaniem protokołu SAML jest Pojedyncze logowanie (SSO). Podmiot, najczęściej użytkownik wykorzystujący przeglądarkę internetową, oczekuje udostępnienia przez Dostawcę Treści treści (zasobu). Dostawca Treści wymaga potwierdzenia tożsamości Podmiotu. Za potwierdzenie tożsamości odpowiada Dostawca Tożsamości.
Typowy scenariusz z wykorzystaniem SAML 2.0:
- Podmiot (np. użytkownik korzystający z przeglądarki) żąda dostępu do treści (zasobu) od Dostawcy Treści.
- Dostawca Treści stwierdza, że wymaga potwierdzenia tożsamości Podmiotu. Dostawca Treści w odpowiedzi przekazuje adres usługi SSO Dostawcy Tożsamości.
- Podmiot zostaje przekierowany do usługi SSO Dostawcy Tożsamości.
- Dostawca Tożsamości uwierzytelnia Podmiot. Dostawca Tożsamości wysyła do Podmiotu odpowiedź (zawierającą m.in. SAMLResponse oraz RelayState)
- Podmiot przesyła do Dostawcy Treści dane otrzymane w poprzednim kroku.
- Dostawca Treści przetwarza dane oraz przesyła Podmiotowi żądanie przekierowania do treści.
- Podmiot zostaje przekierowany do treści.
- Dostawca treści udostępnia Podmiotowi żądaną treść.