SAML i OIDC to dwa najpopularniejsze protokoły uwierzytelnienia stosowane w przemyśle SSO. Ten artykuł porówna SAML i OIDC pod względem ich architektury oraz zastosowań.
SimengDeveloper
Przestań tracić tygodnie na uwierzytelnianie użytkowników
Uruchamiaj bezpieczne aplikacje szybciej z Logto. Zintegruj uwierzytelnianie użytkowników w kilka minut i skup się na swoim głównym produkcie.
SAML (Security Assertion Markup Language) jest opartym na XML otwartym standardem wymiany danych uwierzytelniania i autoryzacji między różnymi stronami, w szczególności między dostawcą tożsamości (IdP) a dostawcą usług (SP).
Umożliwia web-based SSO (Single Sign-On), pozwalając użytkownikom autoryzować się raz, aby uzyskać dostęp do wielu aplikacji. SAML to dojrzały protokół, który istnieje od dłuższego czasu i jest powszechnie przyjęty przez przedsiębiorstwa. Niektóre z najpopularniejszych platform SaaS, takich jak Salesforce, Workday i Microsoft Azure AD, obsługują SAML SSO.
Dostawca tożsamości (IdP): Podmiot, który uwierzytelnia użytkowników i dostarcza informacje o tożsamości dostawcom usług.
Dostawca usług (SP): Podmiot, który dostarcza usługi użytkownikom i polega na dostawcy tożsamości do uwierzytelnienia użytkowników.
Asercje SAML: Dokumenty w formacie XML, które przenoszą dane uwierzytelniania i autoryzacji użytkownika. Zawierają oświadczenia uwierzytelniające, oświadczenia atrybutów i oświadczenia decyzji autoryzacyjnych.
Protokół SAML: Definiuje format wiadomości i zasady wymiany asercji SAML między IdP a SP.
Więzi SAML: Definiują sposób transportu wiadomości SAML przez różne protokoły komunikacyjne, takie jak HTTP POST, HTTP Redirect itp.
Metadane SAML: Dokumenty w formacie XML zawierające informacje konfiguracyjne IdP i SP. Zawierają klucz publiczny, punkty końcowe i obsługiwane więzi, które są używane do ustanowienia zaufania między IdP a SP.
Punkt końcowy jednokrotnego logowania: Punkt końcowy, do którego SP przekierowuje użytkownika w celu uwierzytelnienia z IdP.
URL usługi konsumenta asercji (ACS): Punkt końcowy, do którego IdP wysyła asercję SAML po pomyślnym uwierzytelnieniu.
Dojrzały i szeroko przyjęty: SAML to dojrzały protokół, który istnieje od dłuższego czasu i jest powszechnie przyjęty przez przedsiębiorstwa.
Znormalizowany: SAML to otwarty standard utrzymywany przez OASIS, zapewniający interoperacyjność między różnymi dostawcami.
SSO: SAML umożliwia web-based SSO, pozwalając użytkownikom autoryzować się raz, aby uzyskać dostęp do wielu aplikacji.
Scentralizowane zarządzanie użytkownikami: SAML pozwala organizacjom centralnie zarządzać tożsamościami użytkowników i konsekwentnie egzekwować polityki bezpieczeństwa.
Złożoność: SAML to złożony protokół wymagający głębokiego zrozumienia XML i koncepcji bezpieczeństwa.
Wydajność: Wiadomości SAML są oparte na XML i mogą być duże. Dostarczanie i parsowanie XML może być wolniejsze w porównaniu do formatów tokenów, takich jak JSON Web Token (JWT).
Przestarzały standard: SAML to starszy standard w porównaniu do OIDC i jest uważany za mniej bezpieczny.
Związek z dostawcą: SAML jest protokołem specyficznym dla dostawcy, a zmiana dostawców może być wyzwaniem.
OIDC (OpenID Connect) to warstwa tożsamości zbudowana na protokole OAuth 2.0. Podobnie jak SAML, OIDC służy również do wymiany danych uwierzytelniania i autoryzacji między IdP a SP.
W porównaniu do SAML, OIDC jest nowocześniejszym i lżejszym protokołem, który zdobywa popularność w nowoczesnych aplikacjach webowych i mobilnych. OIDC wykorzystuje JWT do przesyłania informacji o tożsamości, które są bardziej zwarte i łatwiejsze do obsługi w porównaniu do opartych na XML asercji SAML. Jest szczególnie popularny w aplikacjach skierowanych do konsumentów i zabezpieczeniu API.
Dostawca tożsamości (IdP): Podmiot, który uwierzytelnia użytkowników i dostarcza informacje o tożsamości dostawcom usług.
Podmiot polegający (RP): Podmiot, który dostarcza usługi użytkownikom i polega na dostawcy tożsamości do uwierzytelnienia użytkowników. Np. aplikacje webowe, aplikacje mobilne lub API.
Tokeny OIDC: Tokeny, które przenoszą informacje o tożsamości użytkownika.
Token ID: Token w formacie JWT zawierający informacje o tożsamości użytkownika.
Token dostępu: Token w formacie JWT lub nieprzezroczystym zapewniający dostęp do chronionych zasobów.
Token odświeżający: Token używany do uzyskania nowego tokenu dostępu bez konieczności ponownego uwierzytelnienia użytkownika. Daje offline długoterminową autoryzację dla RP.
Punkty końcowe OIDC: Punkty końcowe używane do uwierzytelniania i wymiany tokenów. Niektóre najważniejsze punkty końcowe to:
Punkt końcowy do odkrywania: Gdzie RP może pobrać publiczne informacje konfiguracyjne OIDC z IdP.
Punkt końcowy autoryzacji: Gdzie RP wysyła żądanie uwierzytelniające.
Punkt końcowy tokenu: Gdzie RP żąda tokenów od serwera autoryzacji.
Punkt końcowy informacji o użytkowniku: Gdzie RP może pobrać informacje o profilu użytkownika.
Zakresy: OIDC definiuje zestaw standardowych zakresów, które określają prawa dostępu przyznane RP. Takie jak openid, profile, email, address itp.
Nowoczesny i lekki: OIDC to współczesny protokół, który wykorzystuje tokeny JWT oparte na JSON, które są bardziej zwarte i łatwiejsze do obsługi w porównaniu do opartych na XML asercji SAML.
Aplikacje skierowane do konsumentów: OIDC jest szczególnie popularny w aplikacjach skierowanych do konsumentów i zabezpieczeniu API.
Interoperacyjność: Zbudowany na podstawie OAuth 2.0, OIDC jest kompatybilny z różnymi platformami, urządzeniami i środowiskami.
Bezpieczeństwo: OIDC oferuje bardziej bezpieczną metodę uwierzytelnienia użytkownika i ochrony API. Wdraża różne nowoczesne funkcje bezpieczeństwa, takie jak introspekcja tokenu, unieważnienie tokenu, Proof Key for Code Exchange (PKCE) i obsługuje różne przepływy uwierzytelnienia dostosowane do różnych potrzeb bezpieczeństwa.
Łatwość użycia: OIDC jest prostszy do wdrożenia i pracy w porównaniu do SAML. Jest bardziej przyjazny dla programistów i posiada kompleksowe biblioteki i zestawy SDK dla wielu języków programowania i platform.
Zarządzanie tokenami: OIDC opiera się na tokenach do uwierzytelnienia i autoryzacji. Wymaga odpowiednich praktyk zarządzania tokenami w celu zapewnienia bezpieczeństwa.
Złożoność: Mimo że OIDC jest prosty dla podstawowych konfiguracji, ze względu na elastyczność może dodać złożoności podczas wdrażania zaawansowanych dostosowań. Np. niestandardowych roszczeń czy Kontroli dostępu opartej na rolach (RBAC).
Adopcja: OIDC jest nadal stosunkowo nowy w porównaniu do SAML, zwłaszcza w przestrzeni korporacyjnej. Niektóre systemy starsze mogą nadal polegać na SAML do celów SSO.
Zarówno SAML, jak i OIDC są szeroko wykorzystywane do celów uwierzytelniania i autoryzacji.
SAML pozostaje filarem dla SSO w przedsiębiorstwach i integracji B2B. Jego solidne wsparcie dla zarządzania tożsamością federacyjną i udokumentowana historia gwarantują jego dalszą istotność, szczególnie dla starszych systemów i dużych organizacji.
OIDC natomiast nadal ewoluuje, napędzany zapotrzebowaniem na bezpieczne i skalowalne uwierzytelnianie w nowoczesnych aplikacjach. Jego lekka natura i zgodność z API i mikrousługami czynią go filarem dla architektur cloud-native i rozproszonych. Wraz z rosnącą popularnością uwierzytelniania bezhasłowego, biometrii i uwierzytelniania wieloskładnikowego (MFA), oczekuje się, że OIDC będzie się płynnie integrować z nowymi technologiami, gwarantując jego znaczenie w przyszłych latach.