0Pricing
Cyber Security Academy · Lekcja

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 AuthnRequest i przekierowuje do IdP.
  • IdP uwierzytelnia użytkownika i wysyła metodą POST podpisaną wartość Response do 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 -> session

Podpisy 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 NotBefore i NotOnOrAfter, stosując niewielki dopuszczalny błąd zegara.
  • Należy śledzić ID asercji 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 reuse

Federacja 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.

Wszystkie lekcje w tym kursie

  1. Przepływy OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML i federacja
  4. Ataki na tokeny i wzmacnianie zabezpieczeń
← Powrót do Cyber Security Academy