Czym jest i jak działa protokół OpenID Connect

kapitanhack.pl 2 godzin temu

OpenID Connect (OIDC) to protokół uwierzytelniania, który rozszerza standard OAuth 2.0, dodając warstwę tożsamości. Podczas gdy OAuth zajmuje się autoryzacją dostępu do zasobów (np. API), OIDC umożliwia aplikacjom – klientom (ang. relying parties) – potwierdzenie tożsamości użytkownika. Dzięki temu mogą one poprosić o informacje o użytkowniku oraz sesji, a serwer tożsamości (OpenID Provider) wydaje token ID potwierdzający, iż użytkownik się uwierzytelnił.

Jak działa OIDC – mechanika i najważniejsze elementy

W OIDC kluczową rolę odgrywa ID token – jest to JSON Web Token (JWT), który dostarcza aplikacji informacji o tożsamości użytkownika. Token zawiera tzw. claims, czyli zakodowane dane, takie jak:

  • iss – identyfikator wydawcy (OpenID Provider),
  • sub – unikalny identyfikator użytkownika,
  • aud – odbiorca (zwykle identyfikator klienta),
  • exp – czas wygaśnięcia tokena,
  • iat – czas wydania tokena,
  • auth_time – moment uwierzytelnienia przez użytkownika,
  • nonce – losowy ciąg używany do zapobiegania atakom powtórzeniowym.

Proces typowej autoryzacji z OIDC przebiega następująco: klient wysyła żądanie do serwera tożsamości, ten uwierzytelnia użytkownika, a następnie zwraca ID token (oraz dostępowy/odświeżający, jeżeli są potrzebne). Klient może także pobrać więcej informacji o użytkowniku, korzystając z UserInfo endpoint. Poniżej schemat.

Źródło: curity.io/resources

Główne scenariusze użycia

OpenID Connect jest szeroko wykorzystywany m.in. do:

  • Single Sign-On (SSO) – użytkownik loguje się raz, a następnie może korzystać z wielu aplikacji bez ponownego podawania hasła. Często wykorzystywane w Internecie na platformach Web2.0, z tej metody korzysta np. węzeł krajowy mObywatel.
  • Aplikacji webowych i mobilnych – OIDC działa w przeglądarkach, aplikacjach natywnych i na urządzeniach mobilnych.

Federacji tożsamości – aplikacje mogą delegować uwierzytelnianie do zewnętrznych dostawców tożsamości (Google, Microsoft itp.) lub łączyć się ze starszymi systemami (np. SAML), czyniąc OIDC elastycznym narzędziem modernizacji IAM.

OIDC a OAuth 2.0 i SAML – najważniejsze różnice

  • OAuth 2.0 vs OIDC: OAuth 2.0 koncentruje się na autoryzacji (zezwalaniu aplikacji na dostęp do zasobów), podczas gdy OIDC dodaje możliwość uwierzytelnienia (czyli potwierdzenia, kim jest użytkownik).
  • OIDC vs SAML: SAML używa XML-owych tokenów i funkcjonuje dłużej w tradycyjnych aplikacjach korporacyjnych. OIDC natomiast korzysta z JSON Web Tokenów (JWT) i jest lżejszy, bardziej nowoczesny oraz lepiej dopasowany do aplikacji mobilnych i API.

Główne korzyści ze stosowania OpenID Connect

OIDC ma wiele zalet:

  • API-friendly: komunikacja odbywa się poprzez REST-API, a tokeny są w formacie JSON – co ułatwia integrację z aplikacjami webowymi i mobilnymi.
  • Otwarty Standard: definiowany przez OpenID Foundation, co zapewnia interoperacyjność między dostawcami tożsamości i aplikacjami.
  • Lekka składnia: wykorzystuje JSON, co upraszcza procesy programistyczne.
  • Standaryzowany format tokenów: ID tokeny to JWT, co umożliwia ich łatwą weryfikację po stronie klienta.
  • Bezpieczna dystrybucja kluczy: używa mechanizmu JWKS (JSON Web Key Set) do zarządzania kluczami – nie wymaga infrastruktury PKI.
  • Dostęp do profilu użytkownika: dzięki endpointowi UserInfo aplikacje mogą pobierać dane profilowe (zgodnie z uprawnieniami użytkownika).
  • Wsparcie dla SSO: umożliwia jednokrotne logowanie i dostęp do wielu aplikacji.
  • Kontrola flow uwierzytelniania: aplikacja może wymusić ponowne logowanie, określić metodę uwierzytelnienia lub użyć parametru prompt, by wymusić interakcję użytkownika.

Standardy i rozszerzenia – co jeszcze oferuje OIDC

Coraz więcej aplikacji korporacyjnych wspiera wiele rozszerzeń i standardów OIDC, które zwiększają elastyczność i bezpieczeństwo: dynamiczna rejestracja klientów (DCR), mechanizmy odkrywania dostawcy (Discovery), zarządzanie sesjami (session management), logout (zarówno front-channel, jak i back-channel), a także profile wysokiego bezpieczeństwa jak FAPI (Financial-grade API).

Wybierając aplikację lub metodę uwierzytelniania warto wziąć te aspekty pod uwagę.

Podsumowanie

OpenID Connect stało się kluczowym protokołem uwierzytelniania w nowoczesnych architekturach tożsamości. Dzięki swoim adekwatnościom – lekkości, oparciu na JSON/Web API i szerokim możliwościom rozszerzenia – idealnie sprawdza się w SSO, aplikacjach mobilnych i federacyjnych środowiskach tożsamości. OIDC nie narzuca sposobu, w jaki użytkownik się uwierzytelnia – pozostawia tę decyzję dostawcy tożsamości, jednocześnie zapewniając aplikacjom spójny sposób weryfikacji tożsamości.

Dla organizacji, które chcą wprowadzić nowoczesne zarządzanie tożsamością, wdrożenie OIDC może być krokiem ku bezpieczniejszemu, bardziej zintegrowanemu systemowi uwierzytelniania – i to bez rezygnacji z bezpieczeństwa ani wygody użytkownika.

Idź do oryginalnego materiału