Documentatie voor klanten en partners van Digitaal Vlaanderen - bouwstenen Mijn Burgerprofiel, Verenigingsloket en e-loketondernemers">Documentatie voor klanten en partners van Digitaal Vlaanderen - bouwstenen Mijn Burgerprofiel, Verenigingsloket en e-loketondernemers


Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 27 Next »

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.

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.

Deze 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

Single Sign-on via token

U kunt deze functionaliteit alleen gebruiken als de applicatie waarmee u wilt koppelen, 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 de Mijn Burgerprofiel-applicatie kan gebruiken om een sessie op te starten.

Vereisten

  • De applicatie moet een trust aanvragen voor de Mijn Burgerprofiel Client-ID (zie Bijlage - Mijn Burgerprofiel Client-ID)

  • De applicatie beschikt over ondersteuning voor Token Exchange grant type

  • De applicatie beschikt over ondersteuning voor Client Credential grant type

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 maximum 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 ons code voorbeeld maken we gebruik van een Client-ID en Secret. Echter kan deze informatie ook als Basic Authentication toegevoegd worden.

In geval van een asymmetrisch sleutelpaar dient men gebruik te maken van client assertion.

Zie documentatie Client Authenticatie voor meer informatie en voorbeelden.

Na het succesvol uitvoeren van de Token Exchange zal de applicatie onderstaand antwoord verkrijgen.

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 gebruikercontext door te geven aan Mijn Burgerprofiel dient men het OAuth Access Token verkregen via voorgaande Token Exchange operatie door te geven. Gezien de gevoeligheid van het OAuth Access Token dient deze steeds via een server-to-server operatie te verlopen.

Opmerking: het tijdelijk token dat men verkrijgt via de API endpoint kan slecht eenmalig gebruikt worden. Daarnaast heeft deze ook een heel korte levensduur (ca 2 min) voordat het vervalt.

Als laatste dient men vervolgens het tijdelijk token door te geven als query parameters van de Mijn Burgerprofiel URL. Onderstaand alvast enkele voorbeelden van zo een URLs:

  • 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

https://burgerprofiel.tni-vlaanderen.be

88f04968-d331-4ae0-99d9-c6efb845841f

Productie

https://www.burgerprofiel.be

  • No labels