oAuth Authorization Code Grant
Indien de gebruiker zich via OpenID Connect authenticeerde, dan kan de (frontend) toepassing namens deze aangemelde gebruiker een REST API aanspreken.
Hiervoor stuurt deze (frontend) toepassing het OIDC Access Token uit de OpenId Connect authenticatie als “Bearer token” mee in een oAuth Authorization Code Grant verzoek: de (frontend) toepassing specifieert de ClientID voor de API Resource die hij wil bevragen als een audience en ontvangt dan een API Access Token, bedoeld voor de API Resource, waarmee de API Resource de scopes van de eindgebruiker kan opvragen op het oAuth Introspection Endpoint. Het is niet mogelijk om een OIDC Access Token te sturen naar het Introspection Endpoint enkel een API Access Token kan naar dit Introspection Endpoint.
Een OIDC Access Token is een Access Token waar de client ID van de (frontend) de audience is. Een API Access Token is een Access Token waar de client ID van de API Resource de audience is.
Tip
Zorg ervoor dat je de clientID of Resource van de API Resource kent, zodat je deze kan specifiëren als audienceSchematisch ziet de flow er als volgt uit:
- De (frontend) toepassing vraagt een Authorization Code aan voor een request namens de eindgebruiker (die reeds aangemeld is op de toepassing) en geeft hier het eerder verkregen OIDC accesstoken mee: zie aanvraag Code
- De (frontend) toepassing ontvangt een Authorization Code
- De (frontend) toepassing wisselt de Autorization Code voor API Access Token aan bij het Token Endpoint: zie aanvraag Access Token
- Indien de authenticatie succesvol was, dan ontvangt de (frontend) toepassing een API Access Token: zie terugsturen Access Token
- De (frontend) toepassing bezorgt het API Access Token aan de API Resource: zie vraag Resource op
- De API Resource valideert het API Access Token bij het oAuth Introspection Endpoint: zie valideer Access Token
- Het oAuth Introspection Endpoint valideert het API Access Token en geeft de nodige scopes terug aan de API Resource: zie terugsturen scopes
- De API bezorgt de (frontend) toepassing de gevraagde informatie