0Pricing
Cyber Security Academy · Lekcja

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 opcjonalnie profile i email).
  • Punkt końcowy tokenów zwraca token ID wraz z tokenem dostępowym.
  • Wartość nonce wiąż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-abc

Weryfikacja 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_uri i dopasować nagłówek tokenu kid.
  • 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-configuration zawiera 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 session

OIDC 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ć nonce przeciwko ponownemu użyciu tokenu i state przeciwko 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

  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