OpenID Connect (OIDC)
Dodawanie tożsamości do OAuth
OpenID Connect (OIDC) to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 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.
Dlaczego istnieje OIDC
OpenID Connect to cienka warstwa tożsamości zbudowana na OAuth 2.0. OAuth odpowiada na pytanie co może zrobić ta aplikacja, a OIDC — kim jest użytkownik.
- Standaryzuje sposób uwierzytelniania użytkowników przez klientów i odbierania zweryfikowanych informacji o tożsamości.
- Wprowadza token ID jako podpisane kryptograficznie potwierdzenie uwierzytelnienia.
Przed OIDC programiści niewłaściwie używali tokenów dostępowych OAuth do logowania, co prowadziło do błędów typu confused deputy i podszywania się.
Token ID (JWT)
Najważniejszym elementem OIDC jest token ID — podpisany JWT opisujący zdarzenie uwierzytelnienia.
- Zawiera informacje o tym, kto się zalogował i kiedy.
- Jest przeznaczony do przetwarzania przez klienta, a nie przez serwer zasobów.
Nigdy nie należy wysyłać tokenu ID do interfejsu API jako poświadczenia dostępu ani akceptować go bez sprawdzenia podpisu i claims.
Header.Payload.Signature
{
"iss": "https://idp.example",
"sub": "248289761001",
"aud": "app123",
"exp": 1718000000,
"iat": 1717996400,
"nonce": "n-abc"
}Najważniejsze claims tokenu ID
Weryfikacja tokenu ID oznacza sprawdzenie określonych claims, a nie tylko podpisu.
- iss wystawcy musi odpowiadać oczekiwanemu IdP.
- aud odbiorców musi zawierać identyfikator client_id.
- exp / iat token nie może być wygasły i musi być wydany niedawno.
- sub to stabilny, unikatowy identyfikator użytkownika.
- nonce musi odpowiadać wartości wysłanej przez klienta.
Przepływ uwierzytelniania OIDC
OIDC ponownie wykorzystuje przepływ Authorization Code, dodając zakres openid i wartość nonce.
- Klient żąda zakresu
openid(oraz opcjonalnieprofileiemail). - Punkt końcowy tokenów zwraca token ID wraz z tokenem dostępowym.
- Wartość
noncewiąże token ID z pierwotnym żądaniem, zapobiegając ponownemu użyciu.
GET /authorize?response_type=code
&scope=openid profile email
&client_id=app123
&redirect_uri=https://app.example/cb
&state=xyz&nonce=n-abcWeryfikacja podpisu za pomocą JWKS
Dostawcy OIDC publikują swoje klucze podpisujące w punkcie końcowym JWKS, który można znaleźć w dokumencie konfiguracji well-known.
- Należy pobrać klucze z
jwks_urii dopasować nagłówek tokenukid. - Należy weryfikować podpis za pomocą wymienionego algorytmu asymetrycznego (RS256, ES256).
Należy odrzucać algorytm none i nigdy nie ufać wartości algorytmu podanej wyłącznie przez token.
GET /.well-known/openid-configuration
-> { "jwks_uri": "https://idp.example/jwks", ... }
GET /jwks
-> { "keys": [ { "kid": "k1", "kty": "RSA", ... } ] }Nonce chroni przed ponownym użyciem
Nonce pełni dla tokenów ID taką rolę, jak state dla przekierowania: jest jednorazową wartością wiążącą odpowiedź z żądaniem.
- Klient generuje losową wartość nonce i zapisuje ją w sesji.
- IdP umieszcza ją w tokenie ID.
- Po otrzymaniu tokenu klient sprawdza, czy nonce się zgadza i nie zostało wcześniej użyte.
Blokuje to ponowne użycie tokenu oraz wstrzyknięcie tokenu wystawionego dla innej sesji.
Punkt końcowy UserInfo
Do pobierania dodatkowych danych profilu wykraczających poza token ID OIDC definiuje punkt końcowy UserInfo.
- Klient wywołuje go za pomocą tokenu dostępowego, a nie tokenu ID.
- Zwraca claims, takie jak imię, adres e-mail i zdjęcie, dotyczące uwierzytelnionego podmiotu.
Aby zapobiec podmianie claims, należy zawsze porównywać zwrócone sub z wartością sub z tokenu ID.
GET /userinfo
Authorization: Bearer <access_token>
-> { "sub": "248289761001", "email": "u@example.com" }Discovery i metadane
OIDC standaryzuje mechanizm discovery, aby klienci mogli automatycznie konfigurować punkty końcowe i obsługiwane funkcje.
- Dokument
/.well-known/openid-configurationzawiera listę punktów końcowych, obsługiwanych zakresów i algorytmów. - Należy przypiąć wystawcę lub go zweryfikować; nie należy bezkrytycznie korzystać z mechanizmu discovery na hoście kontrolowanym przez atakującego.
Discovery upraszcza integrację, ale wystawca pozostaje kotwicą zaufania, którą należy zweryfikować.
Wylogowanie front-channel i back-channel
Kończenie sesji w aplikacjach federacyjnych obsługują specyfikacje wylogowania OIDC.
- Wylogowanie front-channel wykorzystuje przekierowania przeglądarki i ramki iframe do wyczyszczenia sesji w każdej stronie ufającej.
- Wylogowanie back-channel wysyła serwerowe tokeny wylogowania; jest bardziej niezawodne, ale wymaga odpowiednich punktów końcowych.
Bez skoordynowanego wylogowania użytkownik może wylogować się z jednej aplikacji, pozostając zalogowanym w innych, co stanowi rzeczywiste zagrożenie dla zarządzania sesjami.
Typowe problemy z OIDC
Błędy związane z tożsamością często wynikają z pomijania etapów weryfikacji.
- Akceptowanie tokenów bez sprawdzania aud (token może być przeznaczony dla innego klienta).
- Ignorowanie iss, co umożliwia podszywanie się pod IdP.
- Brak weryfikacji podpisu lub akceptowanie
alg: none. - Mylenie tokenów ID z tokenami dostępowymi.
- Brak sprawdzania nonce, co umożliwia ponowne użycie tokenu.
Validation checklist:
[ ] iss == expected
[ ] aud contains client_id
[ ] exp not passed, iat sane
[ ] signature verified via JWKS
[ ] nonce matches sessionOIDC a zwykły OAuth przy logowaniu
Jeśli celem jest logowanie, należy użyć OIDC, a nie czystego OAuth.
- Tokeny dostępowe OAuth są nieprzejrzyste dla klienta i nie potwierdzają tożsamości.
- Token dostępowy może być ważny dla innego użytkownika lub aplikacji, co w przypadku użycia go do logowania prowadzi do podszywania się.
- Tokeny ID OIDC są jawnie powiązanymi z odbiorcą potwierdzeniami tożsamości.
To rozróżnienie zapobiega klasycznej luce uwierzytelniania typu confused deputy.
Szybki test: weryfikacja tokenu ID
Należy wybrać najważniejszy krok weryfikacji dla strony ufającej, która przetwarza token ID.
Podsumowanie: OpenID Connect
Najważniejsze informacje:
- OIDC dodaje warstwę tożsamości do OAuth 2.0; token ID jest podpisanym tokenem JWT potwierdzającym uwierzytelnienie.
- Należy zawsze weryfikować iss, aud, exp, podpis (za pomocą JWKS) i nonce.
- Tokeny ID są przeznaczone dla klientów, a tokeny dostępowe dla interfejsów API — nigdy nie należy zamieniać ich ról.
- Należy używać
nonceprzeciwko ponownemu użyciu tokenu istateprzeciwko CSRF. - Gdy trzeba uwierzytelniać użytkowników, należy używać OIDC, a nie czystego OAuth.
Często zadawane pytania
Czy lekcja „OpenID Connect (OIDC)” jest bezpłatna?
Tak — pełny tekst „OpenID Connect (OIDC)” 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 „OpenID Connect (OIDC)”?
Dodawanie tożsamości do OAuth Ć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 2 z 4.
Ile czasu zajmuje lekcja „OpenID Connect (OIDC)”?
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
- Przepływy OAuth 2.0
- OpenID Connect (OIDC)
- SAML i federacja
- Ataki na tokeny i wzmacnianie zabezpieczeń