OpenID Connect Flows

Beschrijving van de verschillende OpenID Connect Flows, hun eigenschappen en de bijhorende Response Types

Type Flows

De “OpenID Connect core” standaard beschrijft drie mogelijke OpenID Connect Flows:

Authorization Code Flow

Dit is de veiligste en meest gebruikte flow, waarbij alle tokens afkomstig zijn van het Token Endpoint.

De Authorization Code Flow stuurt na een succesvolle authenticatie een Authorization Code naar de Client die deze onmiddellijk (en mits de juiste credentials) kan inruilen voor een ID-token en een access token op het Token Endpoint. Dit heeft als voordeel dat de tokens niet blootgesteld worden via de browser (de User Agent).

De details omtrent deze flow kan u hier terugvinden.

Dit is de enige flow die door de ACM IDP ondersteund wordt.

Implicit Flow

Bij deze flow worden alle tokens ontvangen van het Authorization Endpoint, het Token Endpoint wordt niet gebruikt. Het ID-token en access token worden via de browser aan de Client bezorgd, waardoor deze rechtstreeks blootgesteld worden voor de eindgebruiker en in de browser: hierdoor is deze flow intrinsiek onveilig.

Vroeger werd deze flow vaak gebruikt voor publieke Clients (zoals bijvoorbeeld mobiele apps of Single Page Applications), maar er heerst nu een consensus dat publieke Clients best gebruik maken van de Authorization Code Flow in combinatie met PKCE.

Deze Flow wordt niet ondersteund door de ACM IDP.

Hybrid Flow

De Hybrid Flow is een combinatie van de twee voorgaande flows. Deze flow laat toe om net zoals de Implicit Flow onmiddellijk gebruik te maken van het ID-token, maar net zoals bij de Authorization Code Flow bijkomend een Authorization Code in één roundtrip te bekomen: dit kan dan -mits de juiste credentials- gebruikt worden voor langdurige access (via het gebruik van refresh tokens).

Deze flow kan de Authorization Code en tokens bekomen van het Authorization Endpoint, maar kan ook tokens bekomen van het Token Endpoint.

Deze Flow wordt niet ondersteund door de ACM IDP.

Eigenschappen van de verschillende Flows

Authorization Code Implicit Hybrid
Alle tokens komen van het Authorization Endpoint neen ja neen
Alle tokens komen van het Token Endpoint ja neen neen
Tokens worden via de browser gestuurd neen ja ja
Client kan zich authenticeren (bvb. client/secret) ja neen ja
Refresh tokens kunnen gebruikt worden ja neen ja
Communicatie in één roundtrip neen ja neen
Meeste communicatie is server-naar-server ja neen varieert

Response types per Flow

Flow Response type
Authorization Code code
Implicit id_token
Implicit id_token token
Hybrid code id_token
Hybrid code token
Hybrid code id_token token