Disclaimer: Deze pagina’s worden regelmatig bijgewerkt zodat ze altijd de meeste recente informatie bevatten. Aarzel niet om feedback te geven mochten er aanpassingen nodig zijn.
Authenticatie via Vlaams Toegangsbeheer
Vanuit Mijn Burgerprofiel maken we gebruik van het Vlaams Toegangsbeheer om authenticatie te faciliteren. Deze component voorziet automatisch single sign-on functionaliteit zodat een burger zich niet telkens opnieuw moet aanmelden in verschillende applicaties. In het kader van de aanvraagmodule kan een formulier op twee manier geraadpleegd worden:
Embedded in Mijn Burgerprofiel
Stand-alone
De SSO-functionaliteit is gebonden aan deze beperkingen:
een beperkte levensduur
aanmelden moet in dezelfde browserinstantie
geen garantie dat de gebruikerscontext bewaard blijft tussen de verschillende applicaties
bij embed geïmpacteerd door third party cookie problematiek
Single Sign-on via token
U kunt deze functionaliteit alleen gebruiken als de te koppelen aanvraagmodule beschikt over een OpenID Connect integratie met het Vlaams Toegangsbeheer.
Om een aantal beperkingen op te lossen bij de klassieke manier waarop single sign-on werkt, gebruiken we Token Exchange om een OAuth Access Token te generen die door de aanvraagmodule gebruikt kan worden.
Vereisten
De aanvraagmodule moet een trust relatie hebben met Mijn Burgerprofiel Client-ID (zie Bijlage - Mijn Burgerprofiel Client-ID)
Implementatie
…
Single Sign-on vanuit een applicatie begint door het verkrijgen van een OpenID Connect Access Token (OIDC Access Token) via de authorization code grant.
Zodra de applicatie het OIDC Access Token heeft, kan de uitwisseling via de Token Exchange beginnen om een OAuth Access Token te generen dat de Mijn Burgerprofiel-applicatie kan verwerken.
Opmerking: de maximale duur van de Mijn Burgerprofiel applicatieve sessie is gekoppeld aan de resterende tijdsduur van het OIDC Access Token. Om ervoor te zorgen dat een gebruiker zo lang mogelijk kan aangemeld blijven, is het aangeraden om eerst een refresh uitvoeren.
Token Exchange
Zodra de applicatie een OIDC Access Token heeft, kan er een OAuth Access Token worden aangevraagd via delegatie volgens de Token Exchange RFC. Dit betekent dat subject en actor token moeten meegegeven worden tijdens de Token Exchange.
POST /op/v1/token HTTP/1.1 Host: authenticatie-ti.vlaanderen.be Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:token-exchange &audience=<MBP-CLIENT-ID> &subject_token=<OIDC-ACCESS-TOKEN> &subject_token_type=urn:ietf:params:oauth:token-type:access_token &actor_token=<OIDC-ACCESS-TOKEN> &actor_token_type=urn:ietf:params:oauth:token-type:access_token &client_id=<APP-CLIENT-ID> &client_secret=<APP-CLIENT-SECRET>
Naam | Beschrijving |
---|---|
<MBP-CLIENT-ID> | Bevat de Mijn Burgerprofiel Client-ID (zie Bijlage - Mijn Burgerprofiel Client-ID) |
<OIDC-ACCESS-TOKEN> | OpenID Connect Access Token verkregen door gebruik te maken van authorization code grant of via uitvoeren van refresh |
<APP-CLIENT-ID> | Client-ID van de applicatie (zie Client Authenticatie voor alternatieven) |
<APP-CLIENT-SECRET> | Client Secret van de applicatie (zie Client Authenticatie voor alternatieven). |
Opmerking: in het codevoorbeeld gebruiken we een Client-ID en Secret. Deze informatie kan ook als Basic Authentication toegevoegd worden.
Bij een asymmetrisch sleutelpaar is client assertion nodig. Zie ook Client Authenticatie voor meer informatie en voorbeelden.
Wanneer de Token Exchange met succes is uitgevoerd, krijgt de applicatie het onderstaande antwoord:
HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-cache, no-store { "issued_token_type":"urn:ietf:params:oauth:token-type:access_token", "access_token": "ZC5-A1AkXUzXRKb71sAIHBl9F87F18anzEaQy6G6KFD", "expires_in": 3600, "scope": "profile rrn", "token_type": "Bearer" }
Gebruikerscontext doorgeven aan Mijn Burgerprofiel
Om de gebruikerscontext door te geven aan Mijn Burgerprofiel moet het OAuth Access Token - verkregen via de voorgaande Token Exchange - worden doorgegeven. Gezien de gevoeligheid van het OAuth Access Token moet dit altijd via een server-to-server operatie verlopen.
Opmerking: het tijdelijk token via de API-endpoint kan maar één keer gebruikt worden. Bovendien vervalt het na ongeveer 2 min.
Tot slot moet het tijdelijk token worden doorgegeven als query parameters van de Mijn Burgerprofiel-URL. Een aantal voorbeelden van dit type URL's:
TNI:
https://burgerprofiel.tni-vlaanderen.be/?token=<MBP-TEMP-TOKEN>
https://burgerprofiel.tni-vlaanderen.be/meldingen?token=<MBP-TEMP-TOKEN>
Productie:
https://www.burgerprofiel.be/?token=<MBP-TEMP-TOKEN>
https://www.burgerprofiel.be/meldingen?token=<MBP-TEMP-TOKEN>
Bijlage - Mijn Burgerprofiel Client-ID
Client-ID | Omgeving | URL |
---|---|---|
80689076-8c4a-4bef-abc4-82805e17988d | TNI | |
88f04968-d331-4ae0-99d9-c6efb845841f | Productie |