Cross client ID-token

Mogelijkheid om ID-tokens aan te vragen namens een andere Client

In sommige scenario’s is het nuttig om -naast het ID-token dat men voor de eigen Client vroeg- ook een ID-token aan te vragen namens een andere Client. Dit Cross client ID-token bevat enkel de claims die specifiek voor die Client opengesteld werden. Dit kan bijvoorbeeld gebruikt worden als een frontend de identiteit van de aangemelde gebruiker wenst door te geven aan een backend.

Het spreekt voor zich dat de beide toepassingen zich hiermee op voorhand akkoord moeten verklaren: dit dient op voorhand geregistreerd te worden in het integratiedossier.

Om zo’n Cross client ID-token aan te vragen voert men een Authenticatie Request uit, waarbij men de parameter “audience:server:client_id” aan de scope toevoegt met daarbij de ClientID van de doel-Client.

Voorbeeld:

GET /op/v1/auth?
  client_id=28358814-5c20-4c13-bbff-db5dd8c4ae93&
  redirect_uri=https%3A%2F%2Fmijntoepassing.vlaanderen.be%2Fcallback&
  response_type=code&
  scope=openid%20vo%20profile%20audience:server:client_id:929f5b1b-269e-4c94-be4e-023437f123a2 HTTP/1.1
Host: authenticatie.vlaanderen.be

Het afgeleverde ID-token bevat dat een audiance “aud” van de doel-ClientID.

{
  "at_hash": "FE31bSRE8Z2d3ruUO1Xs5A",
  "aud": "929f5b1b-269e-4c94-be4e-023437f123a2",
  "azp": "28358814-5c20-4c13-bbff-db5dd8c4ae93",
  "exp": 1593042764,
  "family_name": "Doe",
  "given_name": "John",
  "iat": 1593039164,
  "iss": "https://authenticatie.vlaanderen.be/op",
  "kid": "_FIQEIeaLQ3AQMWrq022gh17MHjkIYHMWowGj5LxHTo",
  "sub": "2365621db15c6e2846ca71a1f2774e79fg28c487",
  "vo_doelgroepcode": "EA",
  "vo_id": "a5720746-4c9e-48a8-9aa0-7ab456648487"
}

Dit Cross client ID-token moet op een beveiligde manier rechtstreeks aan de doel-toepassing bezorgd worden: dit ID-token mag zeker niet via de browser doorgestuurd worden.

De doel-toepassing kan het ID-token op de normale manier valideren: zie hiervoor de uitleg omtrent het ID-token: de validatie van de “aud” zal voor de doel-toepassing lukken aangezien het Cross client ID-token voor die Client bestemd is.

Men kan ook een ID-token aanvagen dat voor meerdere Clients bestemd is: dit kan door op analoge manier meerdere “audience:server:client_id” parameters mee te geven aan de scope.

Voorbeeld:

GET /op/v1/auth?
  client_id=28358814-5c20-4c13-bbff-db5dd8c4ae93&
  redirect_uri=https%3A%2F%2Fmijntoepassing.vlaanderen.be%2Fcallback&
  response_type=code&
  scope=openid%20vo%20profile%20audience:server:client_id:28358814-5c20-4c13-bbff-db5dd8c4ae93%20
        audience:server:client_id:929f5b1b-269e-4c94-be4e-023437f123a2 HTTP/1.1
Host: authenticatie.vlaanderen.be

Het Cross Client-id token bevat dan meerdere ClientID’s in de audiance “aud”.

{
  "at_hash": "FE31bSRE8Z2d3ruUO1Xs5A",
  "aud": [
    "28358814-5c20-4c13-bbff-db5dd8c4ae93",
    "929f5b1b-269e-4c94-be4e-023437f123a2"
  ],
  "azp": "28358814-5c20-4c13-bbff-db5dd8c4ae93",
  "exp": 1593042764,
  "family_name": "Doe",
  "given_name": "John",
  "iat": 1593039164,
  "iss": "https://authenticatie.vlaanderen.be/op",
  "kid": "_FIQEIeaLQ3AQMWrq022gh17MHjkIYHMWowGj5LxHTo",
  "sub": "2365621db15c6e2846ca71a1f2774e79fg28c487",
  "vo_doelgroepcode": "EA",
  "vo_id": "a5720746-4c9e-48a8-9aa0-7ab456648487"
}