Nederlands
  • OIDC
  • SAML
  • SSO
  • authenticatie
  • autorisatie

SAML vs OIDC

SAML en OIDC zijn de twee populairste authenticatieprotocollen die in de SSO-industrie worden gebruikt. Dit artikel vergelijkt SAML en OIDC op basis van hun architectuur en toepassingsmogelijkheden.

Simeng
Simeng
Developer

Wat is SAML?

SAML (Security Assertion Markup Language) is een op XML gebaseerde open standaard voor het uitwisselen van authenticatie- en autorisatiegegevens tussen verschillende partijen, in het bijzonder tussen een identiteitsprovider (IdP) en een serviceprovider (SP). Het maakt webgebaseerde SSO (Single Sign-On) mogelijk, waardoor gebruikers één keer kunnen inloggen om toegang te krijgen tot meerdere applicaties. SAML is een volwassen protocol dat al lange tijd bestaat en breed wordt gebruikt door bedrijven. Sommige van de meest populaire SaaS-platformen zoals Salesforce, Workday en Microsoft Azure AD ondersteunen allemaal SAML-SSO.

SAML-componenten

  1. Identiteitsprovider (IdP): De entiteit die gebruikers authenticeert en identiteitsinformatie aan serviceproviders verstrekt.
  2. Serviceprovider (SP): De entiteit die diensten aan gebruikers levert en vertrouwt op de identiteitsprovider om gebruikers te authentiseren.
  3. SAML-asserties: Op XML gebaseerde documenten die de authenticatie- en autorisatiedetails van de gebruiker bevatten. Met inbegrip van authenticatieverklaringen, attribuutverklaringen en autorisatiebeslissingverklaringen.
  4. SAML-protocol: Definieert het berichtformaat en de regels voor het uitwisselen van SAML-asserties tussen de IdP en SP.
  5. SAML-bindings: Definieert hoe SAML-berichten worden getransporteerd over verschillende communicatieprotocollen zoals HTTP POST, HTTP Redirect, enz.
  6. SAML-metadata: Op XML gebaseerde documenten die de configuratie-informatie van de IdP en SP bevatten. Dit omvat de openbare sleutel, eindpunten en ondersteunde bindings die worden gebruikt om vertrouwen tussen de IdP en SP te vestigen.
  7. Sign-on endpoint: Het eindpunt waar de SP de gebruiker naar doorverwijst om zich bij de IdP te authentiseren.
  8. Assertieconsumptieservice (ACS) URL: Het eindpunt waar de IdP de SAML-assertie naar verzendt na succesvolle authenticatie.

Hoe werkt SAML?

  1. Door SP geïnitieerde SSO-stroom:
  1. Door IdP geïnitieerde SSO-stroom:

Voordelen van SAML

  • Volwassen en breed geadopteerd: SAML is een volwassen protocol dat al lange tijd bestaat en breed wordt geadopteerd door bedrijven.
  • Gestandaardiseerd: SAML is een open standaard die wordt onderhouden door OASIS, wat interoperabiliteit tussen verschillende leveranciers verzekert.
  • SSO: SAML maakt webgebaseerde SSO mogelijk, zodat gebruikers eenmalig kunnen inloggen om toegang te krijgen tot meerdere applicaties.
  • Gecentraliseerd gebruikersbeheer: Via SAML kunnen organisaties gebruikersidentiteiten centraal beheren en beveiligingsbeleid consequent afdwingen.

Uitdagingen van SAML

  • Complexiteit: SAML is een complex protocol dat een diep begrip van XML en beveiligingsconcepten vereist.
  • Prestaties: SAML-berichten zijn XML-gebaseerd en kunnen groot zijn. XML-overdracht en parsing kunnen trager zijn in vergelijking met tokenformaten zoals JSON Web Token (JWT).
  • Verouderde standaard: SAML is een oudere standaard in vergelijking met OIDC en wordt als minder veilig beschouwd.
  • Leveranciersafhankelijkheid: SAML is een leverancierspecifiek protocol, en het wisselen tussen leveranciers kan uitdagend zijn.

Wat is OIDC?

OIDC (OpenID Connect) is een identiteitslaag gebouwd bovenop het OAuth 2.0 protocol. Net als SAML wordt OIDC ook gebruikt voor het uitwisselen van authenticatie- en autorisatiegegevens tussen IdP en SP.

In vergelijking met SAML is OIDC een moderner en lichter protocol dat aan populariteit wint voor moderne web- en mobiele applicaties. OIDC gebruikt JWT voor het verzenden van identiteitsinformatie, wat compacter en gemakkelijker te hanteren is in vergelijking met op XML-gebaseerde SAML-asserties. Het is vooral populair voor consumentgerichte applicaties en API-beveiliging.

OIDC-componenten

  1. Identiteitsprovider (IdP): De entiteit die gebruikers authenticeert en identiteitsinformatie aan serviceproviders verstrekt.
  2. Vertrouwende partij (RP): De entiteit die diensten aan gebruikers levert en vertrouwt op de identiteitsprovider om gebruikers te authentiseren, bijvoorbeeld web applicaties, mobiele apps of API's.
  3. OIDC-tokens: Tokens die de identiteitsinformatie van de gebruiker bevatten.
    • ID-token: JWT-formaat token dat de identiteitsinformatie van de gebruiker bevat.
    • Toegangstoken: JWT of ondoorzichtig formaat token dat toegang verleent tot beveiligde bronnen.
    • Verversingstoken: Token gebruikt om een nieuw toegangstoken te verkrijgen zonder dat de gebruiker opnieuw hoeft te authenticeren. Het geeft een offline langdurige toestemming aan de RP.
  4. OIDC-endpoints: Endpoints die worden gebruikt voor authenticatie en tokenuitwisseling. Enkele van de belangrijkste endpoints zijn:
    • Ontdekkingsendpoint: Waar de RP de openbare OIDC-configuratie-informatie kan ophalen van de IdP.
    • Autorisatie-endpoint: Waar de RP het authenticatieverzoek naartoe stuurt.
    • Token-endpoint: Waar de RP om tokens vraagt bij de autorisatieserver.
    • Gebruikersinfo-endpoint: Waar de RP de profielinformatie van de gebruiker kan ophalen.
  5. Scopes: OIDC definieert een reeks standaard scopes die de toegangsrechten definiëren die aan de RP zijn verleend. Zoals openid, profile, email, address, enz.

Hoe werkt OIDC?

OIDC biedt meerdere stromen die expliciet zijn ontworpen voor verschillende gebruikssituaties. Hier zijn twee van de meest voorkomende OIDC-stromen:

  1. Autorisatiecode stroom:

Autorisatiecode stroom is de meest gebruikelijke stroom die in OIDC wordt toegepast voor consumentgerichte applicaties.

  1. Clientreferenties stroom:

Clientreferenties stroom kan worden gebruikt voor niet-gebruikers-gebaseerde(machine-to-machine) authenticatie.

Voordelen van OIDC

  • Modern en lichtgewicht: OIDC is een modern protocol dat JSON-gebaseerde JWT-tokens gebruikt, die compacter en gemakkelijker te hanteren zijn in vergelijking met op XML-gebaseerde SAML-asserties.
  • Consumentgerichte applicaties: OIDC is bijzonder populair voor consumentgerichte applicaties en API-beveiliging.
  • Interoperabiliteit: Gebouwd bovenop OAuth 2.0, is OIDC compatibel met diverse platforms, apparaten en platformen.
  • Beveiliging: OIDC biedt een veiligere methode voor gebruikersauthenticatie en API-bescherming. Het omvat verschillende moderne beveiligingsfuncties zoals token introspection, token intrekking, Proof Key for Code Exchange (PKCE), en ondersteunt verschillende authenticatiestromen aangepast aan verschillende beveiligingsbehoeften.
  • Gebruiksgemak: OIDC is eenvoudiger te implementeren en mee te werken in vergelijking met SAML. Het is meer ontwikkelaarsvriendelijk en heeft uitgebreide bibliotheken en SDK's voor meerdere programmeertalen en platforms.

Uitdagingen van OIDC

  • Tokenbeheer: OIDC vertrouwt op tokens voor authenticatie en autorisatie. Het vereist goede tokenbeheerpraktijken om veiligheid te waarborgen.
  • Complexiteit: Hoewel OIDC eenvoudig is voor basisinstellingen, kan het door zijn flexibele aard complexiteit toevoegen bij het implementeren van geavanceerde aanpassingen. Bijvoorbeeld aangepaste claims en Rol-gebaseerde toegangscontrole (RBAC), enz.
  • Adoptie: OIDC is nog relatief nieuw in vergelijking met SAML, vooral in de bedrijfsruimte. Sommige legacy-systemen vertrouwen mogelijk nog steeds op SAML voor SSO-doeleinden.

Vergelijking SAML vs OIDC

AspectSAMLOIDC
TokenformaatOp XML-gebaseerde SAML-assertiesOp JSON-gebaseerde JWT-tokens
Primair gebruikEnterprise SSO, B2B-integratiesConsumentgerichte apps, API-beveiliging
GebruiksgemakComplex, vereist diepgaand begrip van XMLEenvoudig, JSON-gebaseerd, makkelijk te implementeren
AdoptieBreed geadopteerd door bedrijvenToenemend populair voor moderne apps
BeveiligingVolwassen maar als minder veilig beschouwdModern en veiliger
FlexibiliteitBeperkt, ontworpen voor SSO-gebruiksscenario'sFlexibel, ondersteunt verschillende gebruiksscenario's

Toekomst van SAML en OIDC

Zowel SAML als OIDC worden veel gebruikt voor authenticatie en autorisatiedoeleinden.

SAML blijft een hoeksteen voor enterprise SSO en B2B-integraties. De robuuste ondersteuning voor federatief identiteitsbeheer en de bewezen staat van dienst zorgen ervoor dat het relevant blijft, met name voor legacy-systemen en grootschalige organisaties.

OIDC blijft daarentegen evolueren, aangestuurd door de vraag naar veilige en schaalbare authenticatie in moderne applicaties. De lichtgewicht aard en afstemming op API's en microservices maken het een hoeksteen voor cloud-native en gedistribueerde architecturen. Met de opkomst van wachtwoordloze authenticatie, biometrie en multi-factor authenticatie (MFA), wordt verwacht dat OIDC naadloos zal integreren met opkomende technologieën, waardoor het in de komende jaren relevant blijft.