Federacyjna tożsamość: SAML, OAuth i OpenID Connect
Nauczą się Państwo, jak SSO, asercje SAML, przepływy OAuth 2.0 i tokeny OpenID Connect umożliwiają użytkownikom bezpieczne uwierzytelnianie raz w wielu aplikacjach.
Federacyjna tożsamość: SAML, OAuth i OpenID Connect to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 4 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 Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Problem tożsamości w różnych domenach
We współczesnych przedsiębiorstwach pracownicy muszą uzyskiwać dostęp do dziesiątek aplikacji — aplikacji chmurowych, narzędzi SaaS, portali partnerów i systemów wewnętrznych — z których każda może być utrzymywana przez inną organizację. Tworzenie i zarządzanie oddzielnymi kontami dla każdej z nich jest niebezpieczne (prowadzi do nadmiernej liczby poświadczeń) i nieefektywne. Tożsamość federacyjna rozwiązuje ten problem, umożliwiając dostawcy tożsamości (IdP) — zaufanemu, nadrzędnemu źródłu informacji o tożsamości — uwierzytelnianie użytkowników i udostępnianie potwierdzonej tożsamości dostawcom usług (SP) w różnych organizacjach. Użytkownicy uwierzytelniają się raz i uzyskują dostęp do wielu systemów bez ponownego wprowadzania poświadczeń.
Podstawy jednokrotnego logowania (SSO)
Jednokrotne logowanie (SSO) umożliwia użytkownikom jednokrotne uwierzytelnienie i dostęp do wielu aplikacji w ramach jednej sesji bez ponownego uwierzytelniania. Użytkownik loguje się u dostawcy tożsamości (firmowa usługa Active Directory, Okta, Azure AD), otrzymuje token sesji lub asercję i przedstawia ten token każdemu dostawcy usług, którego odwiedza. SSO zwiększa bezpieczeństwo, ponieważ zmniejsza liczbę haseł, którymi użytkownicy muszą zarządzać (ograniczając ich ponowne używanie), umożliwia centralne egzekwowanie zasad uwierzytelniania oraz pozwala natychmiast unieważnić dostęp we wszystkich zintegrowanych aplikacjach, gdy konto zostanie wyłączone na poziomie IdP.
SAML 2.0: federacja oparta na XML
SAML (Security Assertion Markup Language) 2.0 to oparty na XML otwarty standard wymiany danych uwierzytelniania i autoryzacji między dostawcami tożsamości a dostawcami usług. Przebieg SAML: (1) użytkownik uzyskuje dostęp do dostawcy usług (np. Salesforce), (2) SP przekierowuje go do dostawcy tożsamości (np. Okta), (3) użytkownik uwierzytelnia się u IdP, (4) IdP wystawia podpisaną asercję XML SAML Assertion zawierającą tożsamość i atrybuty użytkownika, (5) asercja wraca do SP, (6) SP weryfikuje podpis asercji za pomocą klucza publicznego IdP i przyznaje dostęp. SAML jest powszechnie używany do realizacji SSO w aplikacjach internetowych dla przedsiębiorstw.
<!-- Simplified SAML Assertion structure -->
<saml:Assertion xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'
IssueInstant='2026-06-21T10:00:00Z'
ID='_abc123'>
<saml:Issuer>https://idp.company.com</saml:Issuer>
<saml:Subject>
<saml:NameID>alice@company.com</saml:NameID>
</saml:Subject>
<saml:Conditions NotBefore='2026-06-21T10:00:00Z'
NotOnOrAfter='2026-06-21T10:05:00Z'/>
<saml:AttributeStatement>
<saml:Attribute Name='groups'>
<saml:AttributeValue>Sales</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<!-- Signature verifies IdP signed this assertion -->
</saml:Assertion>Role SAML: IdP, SP i podmiot
W federacji SAML uczestniczą trzy strony. Podmiot (Principal) to użytkownik (lub system) ubiegający się o dostęp — inicjuje on proces uwierzytelniania. Dostawca tożsamości (IdP) jest nadrzędnym źródłem informacji o tożsamości, które uwierzytelnia podmiot i wystawia asercje — przykładami są Microsoft Azure AD, Okta, Ping Identity i ADFS. Dostawca usług (SP) wykorzystuje asercję i na jej podstawie przyznaje dostęp — przykładami są Salesforce, Google Workspace, AWS oraz każda aplikacja obsługująca SAML. SP i IdP ustanawiają wcześniej relację zaufania, wymieniając metadane zawierające adresy URL punktów końcowych i certyfikaty podpisujące drugiej strony.
OAuth 2.0: struktura autoryzacji
OAuth 2.0 to struktura autoryzacji (a nie protokół uwierzytelniania), która umożliwia aplikacji zewnętrznej dostęp do zasobów w imieniu użytkownika bez ujawniania jego poświadczeń. Klasyczny przykład: „Zezwól tej aplikacji do edycji zdjęć na dostęp do usługi Google Photos”. OAuth 2.0 wprowadza cztery role: właściciela zasobu (użytkownika), klienta (aplikację zewnętrzną), serwer autoryzacji (wystawia tokeny) oraz serwer zasobów (udostępnia chroniony zasób). Użytkownik autoryzuje klienta, który otrzymuje token dostępu i przedstawia go serwerowi zasobów — bez konieczności używania rzeczywistego hasła użytkownika.
Przepływ kodu autoryzacyjnego OAuth 2.0
Przepływ kodu autoryzacyjnego jest najbezpieczniejszym przepływem OAuth 2.0 dla aplikacji internetowych. Przebieg: (1) klient przekierowuje użytkownika do serwera autoryzacji wraz z żądanymi zakresami; (2) użytkownik uwierzytelnia się i wyraża zgodę na serwerze autoryzacji; (3) serwer autoryzacji przekierowuje użytkownika z powrotem wraz z krótkotrwałym kodem autoryzacyjnym; (4) klient wymienia kod na token dostępu (oraz opcjonalnie token odświeżania) za pośrednictwem wywołania serwer-serwer z użyciem poświadczeń klienta; (5) klient używa tokenu dostępu do wywoływania serwera zasobów. Wymiana kodu odbywa się po stronie serwera, dzięki czemu token dostępu nie trafia do historii przeglądarki ani do dzienników.
# OAuth 2.0 Authorization Code Flow (step 3-4)
# Step 3: User is redirected back to client with auth code
# GET https://app.example.com/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz
# Step 4: Client exchanges code for access token (server-to-server)
curl -X POST https://auth.example.com/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'code=SplxlOBeZQQYbYS6WxSbIA' \
-d 'redirect_uri=https://app.example.com/callback' \
-d 'client_id=client_abc' \
-d 'client_secret=secret_xyz'
# Response: {'access_token': 'MTQ0Nj...', 'token_type': 'Bearer', 'expires_in': 3600}OpenID Connect: dodanie uwierzytelniania do OAuth
OpenID Connect (OIDC) to warstwa uwierzytelniania zbudowana na OAuth 2.0. OAuth zapewnia wyłącznie autoryzację (tokeny dostępu potwierdzające, co klient może zrobić), natomiast OIDC dodaje uwierzytelnianie (token ID potwierdzający, kim jest użytkownik). OIDC dodaje zakres openid do przepływu OAuth i zwraca podpisany token ID JWT (JSON Web Token) wraz z tokenem dostępu. Token ID zawiera oświadczenia (imię i nazwisko, adres e-mail, sub [identyfikator podmiotu]) identyfikujące użytkownika. OIDC jest obecnie dominującym protokołem SSO w usługach dla użytkowników końcowych — przyciski „Zaloguj się przez Google/Apple/Microsoft” korzystają z OIDC.
# OIDC ID Token is a JWT with three base64url-encoded parts:
# header.payload.signature
# Decoded payload example:
# {
# 'iss': 'https://accounts.google.com',
# 'sub': '110169484474386276334',
# 'aud': 'client_id_abc123',
# 'exp': 1750000000,
# 'iat': 1749996400,
# 'email': 'alice@gmail.com',
# 'name': 'Alice Smith',
# 'email_verified': true
# }
# The signature is verified with the IdP's public key (from JWKS endpoint)JWT: tokeny we współczesnym uwierzytelnianiu
JSON Web Tokens (JWT) to kompaktowy, bezpieczny dla adresów URL format reprezentowania oświadczeń między stronami. Token JWT składa się z trzech zakodowanych w formacie base64url części oddzielonych kropkami: nagłówka (algorytm i typ tokenu), ładunku (oświadczenia: iss, sub, aud, exp, iat oraz oświadczenia niestandardowe) i podpisu (podpis kryptograficzny weryfikujący integralność tokenu). Tokeny JWT są samowystarczalne — serwer zasobów może je zweryfikować bez komunikowania się z serwerem autoryzacji, co zwiększa wydajność i umożliwia tworzenie architektur bezstanowych. Najważniejszy wymóg bezpieczeństwa: zawsze należy weryfikować podpis JWT oraz sprawdzać oświadczenia exp (termin wygaśnięcia) i aud (odbiorcy).
# Decode a JWT (header and payload are just base64 encoded)
import base64, json
jwt = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiZXhwIjoxNzUwMDAwMDAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
parts = jwt.split('.')
print('Header:', json.loads(base64.b64decode(parts[0] + '==')))
print('Payload:', json.loads(base64.b64decode(parts[1] + '==')))
# Signature (parts[2]) must be verified with IdP public key!SAML a OAuth i OIDC: kiedy używać którego standardu
Zrozumienie, kiedy stosować poszczególne standardy, ma kluczowe znaczenie na egzaminie Security+. SAML 2.0: korporacyjne SSO dla aplikacji internetowych, przepływy oparte na przeglądarce i asercje XML. Jest starszy, ale powszechnie wdrożony w przedsiębiorstwach. OAuth 2.0: autoryzacja interfejsów API — przyznawanie aplikacjom zewnętrznym ograniczonego dostępu do zasobów. Nie uwierzytelnia bezpośrednio użytkowników. OIDC: uwierzytelnianie użytkowników końcowych i we współczesnych przedsiębiorstwach (SSO), zbudowane na OAuth 2.0. Zwraca tokeny ID JWT identyfikujące użytkownika. W praktyce środowiska korporacyjne często używają SAML do SSO aplikacji, a OIDC do uwierzytelniania interfejsów API i aplikacji mobilnych. Nowoczesne środowiska cloud-native preferują OIDC zamiast SAML ze względu na format JSON/JWT i lepszą obsługę urządzeń mobilnych.
Wektory ataków na federację
Systemy tożsamości federacyjnej wprowadzają określone wektory ataków. Ataki polegające na ponownym użyciu asercji: atakujący przechwytuje asercję SAML i używa jej ponownie, aby uzyskać dostęp. Ogranicza się to przez krótki czas życia asercji i identyfikatory asercji jednorazowego użytku. XML signature wrapping (XSW): w SAML atakujący mogą czasem zmodyfikować podpisany kod XML w celu zmiany oświadczeń przy zachowaniu ważności podpisu dla oryginalnej treści. Pomylenie algorytmów JWT: jeśli serwer akceptuje zarówno algorytmy RS256 (asymetryczny), jak i HS256 (symetryczny), atakujący może sfałszować tokeny JWT, używając klucza publicznego serwera jako sekretu HMAC dla HS256. Zawsze należy sprawdzać, czy algorytm określony w nagłówku odpowiada oczekiwanemu algorytmowi. Otwarte przekierowania: identyfikatory URI przekierowania OAuth muszą być porównywane dokładnie, aby zapobiec kradzieży tokenów wskutek przekierowania do witryn kontrolowanych przez atakującego.
Federacja katalogów i SCIM
Federacja tożsamości w przedsiębiorstwie często wymaga synchronizowania danych o tożsamości użytkowników między systemami. SCIM (System for Cross-domain Identity Management) to standard interfejsu API REST służący do automatyzacji tworzenia i usuwania kont użytkowników między dostawcą tożsamości a połączonymi dostawcami usług. Gdy nowy pracownik zostaje dodany do Azure AD (IdP), SCIM automatycznie tworzy jego konto w Salesforce, Slack, GitHub i innych aplikacjach zgodnych z SCIM. Po rozwiązaniu stosunku pracy SCIM jednocześnie dezaktywuje wszystkie konta, zamykając lukę czasową, w której osierocone konta mogłyby zostać wykorzystane. SCIM uzupełnia protokoły SSO (SAML/OIDC), obsługując zarządzanie cyklem życia tożsamości, którego te protokoły nie obejmują.
Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień CompTIA Security+ (SY0-701) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: SAML 2.0 wykorzystuje asercje XML do realizacji korporacyjnego SSO opartego na przeglądarce; OAuth 2.0 to struktura autoryzacji służąca do delegowania dostępu do interfejsów API; OpenID Connect dodaje uwierzytelnianie (tokeny ID JWT) do OAuth; natomiast SCIM automatyzuje zarządzanie cyklem życia tożsamości w systemach federacyjnych. W ten sposób kończymy kurs Uwierzytelnianie i autoryzacja — następnie omówimy podstawy bezpieczeństwa sieci.
Często zadawane pytania
Czy lekcja „Federacyjna tożsamość: SAML, OAuth i OpenID Connect” jest bezpłatna?
Tak — pełny tekst „Federacyjna tożsamość: SAML, OAuth i OpenID Connect” 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 Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Federacyjna tożsamość: SAML, OAuth i OpenID Connect”?
Nauczą się Państwo, jak SSO, asercje SAML, przepływy OAuth 2.0 i tokeny OpenID Connect umożliwiają użytkownikom bezpieczne uwierzytelnianie raz w wielu aplikacjach. Ćwiczysz Cloud & IT Cert Prep 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ąć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep 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 4 z 4.
Ile czasu zajmuje lekcja „Federacyjna tożsamość: SAML, OAuth i OpenID Connect”?
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 Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep 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
- Zasady haseł i uwierzytelnianie wieloskładnikowe
- Biometria i uwierzytelnianie oparte na tokenach
- Modele autoryzacji: RBAC, MAC i DAC
- Federacyjna tożsamość: SAML, OAuth i OpenID Connect