Wat zijn de verschillen tussen SAML en OIDC?
In dit artikel geven we een overzicht van de SAML- en OIDC-protocollen, samen met hun typische authenticatiestromen. We vergelijken de duidelijke verschillen, voor- en nadelen van elk protocol. Daarnaast bieden we, gebaseerd op potentiële gebruikersscenario's, begeleiding bij het kiezen tussen deze twee protocollen.
OpenID Connect (OIDC) en Security Assertion Markup Language (SAML) zijn authenticatieprotocollen die Identiteitsproviders (IdP's) in staat stellen om gebruiksauthenticatie en toegang te beheren. Elk protocol definieert zijn eigen mechanisme voor het behouden van de identiteit van geauthenticeerde gebruikers, die vervolgens wordt gebruikt om toegang tot beveiligde applicaties toe te kennen of te weigeren.
Wat zijn SAML en OIDC?
IdP's behouden databases met gebruikersidentiteitsinformatie. Dienstverleners (SP's) vertrouwen op deze informatie om gebruikers te authenticeren, waardoor soms één enkele authenticatie kan worden gebruikt voor meerdere applicaties (single sign-on). OIDC en SAML zijn standaarden die definiëren hoe deze met gebruikersidentiteit gerelateerde informatie tussen deze twee partijen stroomt. Hun uiteindelijke doel is hetzelfde: gebruikersauthenticatie. De fundamentele benaderingen die zij gebruiken om dit doel te bereiken verschillen echter.
SAML
SAML 2.0, sinds 2005, is de huidige versie van de standaard. Het gebruikt XML om identiteitsinformatie, verzoeken en antwoorden te formateren. XML is een volwassen standaard voor het formateren van documenten op een manier die zowel door mensen als computers begrijpelijk is. Voor het verzenden of ontvangen van XML-gecodeerde informatie gebruikt het basis-SOAP- of HTTP-verzoeken. Gedefinieerd door het SAML-protocol, is de dienst die identiteitsinformatie aanvraagt de Serviceprovider (SP).
Voordat we het typische SAML-authenticatieproces introduceren, moeten we de elementen begrijpen waarop SAML-authenticatie berust. Voordat IdP en SP elkaar kunnen herkennen en het authenticatieproces kunnen voltooien, moeten ze "uitwisselen" van noodzakelijke informatie, meestal gerealiseerd door XML-geformatteerde metadata. De uitgewisselde informatie omvat:
- Publieke sleutels, waarbij IdP en SP hun eigen privé en publieke sleutelparen genereren en deze uitwisselen om communicatie te ondertekenen of te versleutelen. Met de vooruitgang in netwerkcommunicatiebeveiliging vereisen de meeste scenario’s nu alleen het ondertekenen van verzoeken, waardoor de versleuteling stap wordt weggelaten.
- Eindpunten, gebruikt voor de SP om SAML-authenticatieverzoeken naar de IdP te sturen en voor de SP om SAML-verklaringen te ontvangen als antwoord op authenticatieverzoeken van de IdP.
- Ondersteunde XML-attribuutformaten, gebruikt voor de IdP om de vereiste gebruikersinformatie naar de SP te verzenden na het voltooien van de authenticatie.
Zodra IdP en SP op de hoogte zijn van de bovengenoemde informatie, kunnen ze doorgaan met het autorisatieproces (een typische door SP geïnitieerde authenticatiestroom):
OIDC
OIDC is een eigentijds protocol dat het OAuth 2.0-kader verbetert. Het maakt gebruik van JSON-gebaseerde Webtokens (JWT) voor het construeren van datapayloads. JWT's, een gevestigde industriestandaard, stellen richtlijnen vast voor de veilige uitwisseling en weergave van claims tussen entiteiten. Deze claims, in feite versleutelde gebruikersgegevens, zijn cruciaal voor identiteitsverificatie en -beheer. OIDC maakt voornamelijk gebruik van het alomtegenwoordige HTTPS voor datatransmissie.
Zoals algemeen bekend, ondersteunt het OIDC-protocol verschillende stromen, waaronder de autorisatiecode-stroom, impliciete stroom en hybride stroom. In het volgende voorbeeld zullen we de meest veilige en typische van deze stromen doornemen: de autorisatiecode-stroom. Dit is ook de stroom die door Logto wordt gebruikt.
Kenmerkende aspecten van OIDC en SAML
- Gezien zijn recentere ontwikkeling, is OIDC beter geschikt voor moderne applicatieauthenticatie vergeleken met de oudere SAML-standaard.
- Historisch gezien gaat SAML vooraf aan OIDC en is het geïntegreerd in tal van gevestigde bedrijfsystemen.
- In tegenstelling tot de omvangrijke XML-documenten van SAML, zijn de JWT's van OIDC compact en gebruiksvriendelijker bij verwerking.
- Het configureren van OIDC is over het algemeen eenvoudiger dan SAML.
- Een belangrijk kenmerk van OIDC is de definitie van “scopes”, waarmee IdP's een verscheidenheid aan permissies kunnen beheren. Applicaties kunnen specifieke permissies van IdP's aanvragen, die worden toegekend na goedkeuring van de gebruiker. Dit kenmerk van OIDC biedt IdP's gedetailleerde controle over permissies.
Hoe moet je kiezen tussen OIDC en SAML?
Zowel OIDC als SAML zijn robuuste authenticatiesystemen, elk met hun unieke sterktes. De keuze hangt af van de specifieke eisen van je organisatie.
- Voor snelle en efficiënte inzet van identiteitsplatforms is OIDC te verkiezen boven SAML. OIDC implementeren is simpeler, waardoor de complexe XML-afhandeling wordt vermeden die SAML vereist voor metadataontleding, authenticatieverwerkingsverwerking en SAML-verklaringsanalyse.
- OIDC is ideaal voor omgevingen met uitgebreide API-interacties en geavanceerde permissiemechanismen, die meer aanpasbare en efficiënte controle over permissies bieden en een superieure ontwikkelaarservaring bieden.
- Bij integratie met gevestigde systemen die op SAML zijn gebaseerd, zorgt het kiezen van SAML voor een soepelere interoperabiliteit van systemen en vermindert het de inspanning die nodig is om verschillende protocollen te overbruggen.
Zijn er goede oplossingen beschikbaar op de markt?
Logto, een populaire identiteitsoplossing onder ontwikkelaars, heeft onlangs Enterprise SSO-functionaliteit geïntroduceerd. Het biedt ondersteuning voor zowel SAML- als OIDC-protocollen, naast kant-en-klare integraties voor mainstream IdP's zoals Google Workspace en Microsoft Entra ID (voorheen Azure AD). Met Logto kun je de complexiteit van het zelf implementeren van SSO omzeilen. Een paar eenvoudige configuratiestappen bieden SSO-ondersteuning in je identiteitsysteem, zodat je het juiste protocol kunt selecteren om aan je zakelijke behoeften te voldoen.