SAML i federacja
Jednokrotne logowanie w przedsiębiorstwie
SAML i federacja to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Czym jest SAML
SAML (Security Assertion Markup Language) to oparty na XML standard wymiany danych uwierzytelniania i autoryzacji, dominujący w obszarze jednokrotnego logowania w przedsiębiorstwach.
- Umożliwia firmowemu dostawcy tożsamości potwierdzenie tożsamości użytkownika w wielu aplikacjach.
- SAML 2.0 powstał przed OIDC i nadal jest powszechnie stosowany w środowiskach B2B oraz w systemach tożsamości pracowników.
Znajomość SAML jest niezbędna do zabezpieczania federacji przedsiębiorstw, w której pojedyncza luka w zaufaniu naraża każdą połączoną aplikację.
Role IdP i SP
Federacja SAML obejmuje dwie główne strony.
- Identity Provider (IdP) uwierzytelnia użytkownika i wystawia asercje (Okta, Entra ID, Ping).
- Service Provider (SP) to aplikacja, która ufa IdP i przyznaje dostęp.
Zaufanie ustanawia się poza kanałem przez wymianę metadanych, w tym certyfikatów podpisujących i adresów URL punktów końcowych.
IdP -> authenticates user, signs assertion
SP -> consumes assertion, grants access
Metadata exchange establishes trust (certs, ACS URLs)Asercja SAML
Podstawowym elementem jest asercja — dokument XML stwierdzający, że IdP uwierzytelnił podmiot.
- Subject identyfikuje użytkownika (NameID).
- Conditions definiuje okres ważności i docelowego odbiorcę.
- AuthnStatement rejestruje sposób i czas uwierzytelnienia.
- AttributeStatement zawiera role, adres e-mail i claims grup.
<saml:Assertion>
<saml:Subject><saml:NameID>user@corp</saml:NameID></saml:Subject>
<saml:Conditions NotOnOrAfter="2026-06-04T10:05:00Z"
AudienceRestriction="https://sp.example"/>
<saml:AuthnStatement .../>
</saml:Assertion>Przepływ SSO inicjowany przez SP
Najczęściej stosowany jest przepływ SSO inicjowany przez SP.
- Użytkownik przechodzi do SP, który generuje
AuthnRequesti przekierowuje do IdP. - IdP uwierzytelnia użytkownika i wysyła metodą POST podpisaną wartość
Responsedo usługi odbiorcy asercji (ACS) SP. - SP weryfikuje asercję i tworzy lokalną sesję.
1. SP -> AuthnRequest -> IdP (redirect)
2. user authenticates at IdP
3. IdP -> signed SAMLResponse -> SP ACS (HTTP POST)
4. SP validates -> sessionPodpisy XML są podstawą zaufania
Bezpieczeństwo SAML opiera się na cyfrowych podpisach XML. IdP podpisuje asercję i/lub odpowiedź swoim kluczem prywatnym, a SP weryfikuje podpis za pomocą zaufanego certyfikatu.
- Należy podpisywać samą asercję, a nie tylko zewnętrzną odpowiedź.
- Należy weryfikować podpis względem przypiętego certyfikatu IdP z metadanych, a nie certyfikatu osadzonego w wiadomości.
Większość ataków na SAML wymierzona jest w logikę weryfikacji podpisu.
XML Signature Wrapping (XSW)
XML Signature Wrapping to klasa ataków na podpisy w SAML. Atakujący zachowuje prawidłowo podpisany element, ale dodaje drugą, sfałszowaną asercję, którą faktycznie odczytuje logika aplikacji.
- Podpis nadal przechodzi weryfikację dla pierwotnego fragmentu.
- Jednak logika biznesowa przetwarza wstrzykniętą, niepodpisaną asercję.
Środki zaradcze: należy używać wzmocnionej biblioteki SAML, sprawdzać, czy podpisany element jest elementem przetwarzanym przez aplikację, oraz odrzucać dokumenty zawierające wiele lub niejednoznaczne asercje.
Document after XSW:
<Response>
<Assertion id="evil">attacker claims</Assertion> // read by app
<Assertion id="orig" SIGNED>real user</Assertion> // sig valid here
</Response>Ograniczenia odbiorcy i adresata
Asercja musi być powiązana z docelowym SP. SAML zapewnia w tym celu jawne ograniczenia.
- AudienceRestriction określa identyfikator encji SP, dla którego asercja jest ważna.
- Wartość Recipient w SubjectConfirmation musi odpowiadać adresowi URL ACS.
SP musi egzekwować te ograniczenia. Pominięcie sprawdzania odbiorcy umożliwia ponowne użycie asercji wystawionej dla jednej aplikacji w innej aplikacji.
Ochrona przed ponownym użyciem i problemy z czasem
Asercje są krótkotrwałymi, jednorazowymi poświadczeniami. SP musi to egzekwować.
- Należy uwzględniać wartości
NotBeforeiNotOnOrAfter, stosując niewielki dopuszczalny błąd zegara. - Należy śledzić
IDasercji i odrzucać każde ponowne użycie w okresie jej ważności. - Należy wymagać TLS na punkcie końcowym ACS.
Bez śledzenia ponownego użycia przechwycona asercja może zostać przesłana ponownie przed wygaśnięciem.
SP checks:
now in [NotBefore, NotOnOrAfter] (+- small skew)
assertion.ID not seen before -> store + reject reuseFederacja i łańcuchy zaufania
Federacja umożliwia skalowanie SSO między organizacjami, czasami za pośrednictwem hubów lub brokerów tłumaczących między protokołami.
- Każde połączenie zaufania jest potencjalnym słabym punktem; przejęty IdP pozwala podszyć się pod każdego użytkownika.
- Brokerzy tożsamości mogą łączyć SAML i OIDC, co wymaga starannego mapowania claimów.
Należy stosować zasadę najmniejszych uprawnień przy mapowaniu atrybutów i monitorować pojawianie się nieoczekiwanych nowych rejestracji SP.
Typowe słabości SAML
Powtarzające się tryby awarii SAML, które warto audytować:
- Podpis nie jest weryfikowany albo podpisana jest odpowiedź, ale nie asercja.
- Podatność na XML Signature Wrapping.
- Brak sprawdzania odbiorcy i adresata.
- Brak ochrony przed ponownym użyciem lub zbyt długie okresy ważności.
- Parsowanie zewnętrznych encji XML (XXE) po stronie SP.
- Zaufanie certyfikatowi osadzonemu w komunikacie zamiast przypiętym metadanym.
Disable external entities in the XML parser:
parser.setFeature(
"http://apache.org/xml/features/disallow-doctype-decl", true)SAML a OIDC
Oba protokoły zapewniają SSO, ale różnią się konstrukcją.
- SAML XML, przeglądarkowe powiązania POST/redirect, szerokie zastosowanie w przedsiębiorstwach i środowiskach pracowniczych, dojrzałe narzędzia.
- OIDC JSON/JWT, lepsza współpraca z REST, lepszy wybór dla aplikacji mobilnych i SPA.
Wiele organizacji korzysta z obu protokołów. Osoby odpowiedzialne za bezpieczeństwo powinny znać reguły walidacji asercji dla protokołu używanego przez daną aplikację, ponieważ powierzchnia ataku jest różna.
Szybki test: odpieranie XSW
Należy wybrać najlepszą ochronę przed opisanym atakiem.
Podsumowanie: SAML i federacja
Najważniejsze informacje:
- SAML to oparty na XML protokół korporacyjnego SSO między IdP i SP, wykorzystujący podpisane asercje.
- Bezpieczeństwo zależy od prawidłowej walidacji podpisu XML względem przypiętego certyfikatu.
- Należy chronić się przed XML Signature Wrapping, atakami powtórzeniowymi i XXE.
- Zawsze należy wymuszać ograniczenia odbiorcy i adresata oraz okresy ważności.
- Federacja skaluje zaufanie, ale zwielokrotnia zakres skutków przejęcia IdP.
Często zadawane pytania
Czy lekcja „SAML i federacja” jest bezpłatna?
Tak — pełny tekst „SAML i federacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „SAML i federacja”?
Jednokrotne logowanie w przedsiębiorstwie Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „SAML i federacja”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?
Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.