SAML 2.0 / OpenID Connect brug
Standaard is FoxIDs een brug tussen SAML 2.0 en OpenID Connect / OAuth 2.0 zonder extra configuratie.
Federated Identity Management (FIM) richt zich op het koppelen van identiteiten over domeinen heen, terwijl Single Sign-On (SSO) toegang over applicaties heen vereenvoudigt. FoxIDs ondersteunt zowel FIM als SSO, en de brug maakt dit mogelijk over SAML 2.0 en OpenID Connect.
OpenID Connect (OIDC) en SAML 2.0 zijn beide широко used protocols voor identiteitsfederatie, single sign on (SSO) en gebruikersauthenticatie. Ze verschillen echter fundamenteel in structuur en ontwerp. Soms moet je deze protocollen overbruggen of integreren, bijvoorbeeld wanneer een applicatie die OpenID Connect ondersteunt moet werken met een Identity Provider (IdP) die alleen SAML 2.0 ondersteunt.
Belangrijkste verschillen tussen de twee protocoltypen:
- OIDC: Gebouwd bovenop OAuth 2.0, een modern protocol voor web en mobiele apps met RESTful APIs. Gebruikt JSON Web Tokens (JWT) voor identity tokens en access tokens.
- SAML 2.0: XML gebaseerd en gericht op browsergebaseerde SSO scenario's, vaak gebruikt in enterprise omgevingen. Gebruikt XML gebaseerde assertions / tokens.
Om een OpenID Connect systeem te verbinden met een SAML 2.0 systeem heb je een protocolvertaling of bruglaag nodig. Dit kan worden bereikt met een tussenlaag die zowel als OpenID Connect Provider (OP) en SAML Service Provider (SP) fungeert, of omgekeerd.
Als je een SAML 2.0 authenticatiemethode configureert naar een externe Identity Provider (IdP) en je app koppelt als OpenID Connect applicatie waarbij je de SAML 2.0 authenticatiemethode selecteert, wordt een login request van je app gerouteerd als een externe SAML 2.0 login request. De SAML 2.0 login respons wordt vervolgens gemapt naar een OpenID Connect respons voor je app. SAML 2.0 claims worden automatisch omgezet naar JWT (OAuth 2.0) claims.
Het omgekeerde is ook mogelijk door de login request te starten vanuit een SAML 2.0 application registration app en te routeren naar een externe OpenID Provider (OP) die is geconfigureerd als een OpenID Connect authenticatiemethode. Vervolgens wordt de respons geconverteerd naar een SAML 2.0 respons.
FoxIDs ondersteunt het overbruggen van zowel login, logout als single logout tussen SAML 2.0 en OpenID Connect.
Eén omgeving - één Identity Provider
Alle brug functionaliteit kan in dezelfde omgeving worden gecombineerd. Hierdoor kan een OpenID Connect app tegelijkertijd login via zowel een SAML 2.0 als OpenID Connect authenticatiemethode ondersteunen. De OpenID Connect app kan de authenticatiemethode programmatic kiezen of de gebruiker laten kiezen op een home realm discovery (HRD) pagina.
Het is aanbevolen om een applicatie infrastructuur te hebben met OpenID Connect ingeschakelde clients en OAuth 2.0 ingeschakelde APIs. Waar alle applicaties (clients en APIs) dezelfde Identity Provider (IdP) vertrouwen - één IdP is gelijk aan één omgeving in FoxIDs. Door de brug functionaliteit in FoxIDs worden SAML 2.0 tokens gemapt naar ID tokens en access tokens die kunnen worden gebruikt om OpenID Connect apps te authenticeren en bestaande APIs aan te roepen.
Token exchange
Als een gebruiker toegang krijgt tot een SAML 2.0 app na succesvolle login met een externe SAML 2.0 Identity Provider (IdP), krijgt de gebruiker toegang tot de SAML 2.0 app in de context van de gebruiker zelf. Met zero trust (nooit vertrouwen, altijd verifiëren) moet je je APIs aanroepen in de context van de gebruiker. Dit is mogelijk met token exchange, waarbij het SAML 2.0 token kan worden omgewisseld naar een access token met de identiteit van de eindgebruiker. Vervolgens kan je OAuth 2.0 ingeschakelde API in de context van de gebruiker worden aangeroepen.
Claim mappings
FoxIDs gebruikt intern JWT claims en mapt SAML 2.0 claims naar JWT claims. Standaard wordt een set standaard JWT naar SAML 2.0 claims gemapt, zoals sub naar http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier, email naar http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress enz.
Je kunt aanvullende JWT naar SAML 2.0 claim mappings toevoegen.
Als er geen mapping bestaat voor een bepaalde claim, blijft de lange SAML 2.0 claimnaam behouden uit claims ontvangen in een SAML 2.0 token in plaats van een kortere equivalente JWT claimnaam. Hetzelfde geldt in de omgekeerde richting.