Terugsturen scopes

De API ontvangt een JSON met daarin de geldigheid van het Access Token en de scopes

Het Introspection Endpoint stuurt een JSON terug met daarin als belangrijkste parameters “active” en “scope”.

oAuth token exchange - stuur scopes terug

Voorbeeld:

HTTP/1.1 200 OK
Content-Type: application/json

     {
      "active": true,
      "aud": "37f875cb-a7bd-4724-ac39-4729092f8412",
      "client_id": "28358814-5c20-4c13-bbff-db5dd8c4ae93",
      "exp": 1592208060,
      "iat": 1592208000,
      "iss": "https://authenticatie.vlaanderen.be/op",
      "jwt": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlNiRVlDckNaRVVhT1dqSmxieDRjOTRnMmlfQ3NlNEI1NUpNc2doX1pJT28ifQ.eyJhY3RpdmUiOnRydWUsImF1ZCI6IjM3Zjg3NWNiLWE3YmQtNDcyNC1hYzM5LTQ3MjkwOTJmODQxMiIsImNsaWVudF9pZCI6IjI4MzU4ODE0LTVjMjAtNGMxMy1iYmZmLWRiNWRkOGM0YWU5MyIsImV4cCI6MTU5MjIwODA2MCwiaWF0IjoxNTkyMjA4MDAwLCJpc3MiOiJodHRwczovL2F1dGhlbnRpY2F0aWUudmxhYW5kZXJlbi5iZS9vcCIsInNjb3BlIjoiQXBwUmVhZCIsInN1YiI6Ilo1TzN1cFBDODhRckFqeDAwZGlzIiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInZvX25hYW0iOiJEb2UiLCJ2b192b29ybmFhbSI6IkpvaG4ifQ.LB7hBOOCWnCwrSkamc3ZVxWSXmWOYtxP5Hs3a1_sfz6qkVzJkjpCN16IvjV69V05ep0LP7zUSyeLTWqEQZo13yVC4IvXo5Fu69-xRqKWEGboXhY6An0GMDR0Q0UqwmOmYSz8OPkBe5L4imuQajC4i0ln0RfAHk_Gaoe7c2D9PoXCdETSLXr_wFS63ewprxdciSrGcEr6YIgg6Q7mNM6XtSs5XJ-iw_46N7ZiCJCtp4PcxS94Oy2StPPq4MRCDpWsW0j3nZ8qbsksea5BlZ2h4MfsCdUU0qJhVPjKfE2RLH8kQonUMCdYUD8LluhMqLpA4GQnYOKMnR8S2ianQY78H_64yDo4-NhcmCbeucrFiICHCbeKVbx99h6Ia9NKnk_XBSafSndFnGs8cnVbgdaNZ8IQS9aztMWTy8T8_1beinqPu5zLqpPdWM2j0CHblNDF3yY0SbAS6qfJEEtaDj4HzF7w0ob3kdRHmdhSLJhk7_obqAq3ELvcFa-XvPfuX-hCHNdUrnbUoMap_h7WPJTzgEwKfukieSl4XyMqkek7HexB7DCfs4_Q9fBQ6bSo0Lwj9GSjRQoAuZq_Cjkpj9szO96D2us5w6GQ4WobI2QIW9lenxkUrej-ww_WypqBRBIrYK5IjXjXs2rFWMHrn87wuXwAEjJG1cVQOCvgg5zPCyY",
      "scope": "AppRead",
      "sub": "Z5O3upPC88QrAjx00dis",
      "token_type": "bearer",
      "vo_naam": "Doe",
      "vo_voornaam": "John"
     }

Zodra de API de bevestiging krijgt dat dit een geldig Access Token is, dan kan die verder met de verwerking van de info uit deze JSON: in “scope” staan bijvoorbeeld de scopes vermeld die aangevraagd werden EN waarvoor deze gebruiker effectief geautoriseerd is.

Claims met gebruikersinfo

Bij de intake van de API kan er op voorhand vastgelegd worden welke claims voor deze API uitgeleverd moeten worden: deze claims worden dan toegevoegd aan dit antwoord dat afkomstig is van het introspection endpoint.

Voorbeeld:

In bovenstaand voorbeeld werd bepaald dat de voornaam en naam van de aangemelde gebruiker uitgeleverd dienden te worden (in claims vo_voornaam en vo_naam): deze gebruikersinfo is dus zichtbaar en bruikbaar voor de API.

De key “jwt”

In het antwoord wordt steeds de key “jwt” meegestuurd: de inhoud is een JWT-token dat getekend werd door de IDP van Toegangsbeheer: de standaard (cfr. RFC7662 paragraaf 2.2) laat het toevoegen van zulke extra velden immers toe en dit biedt een ernsitge meerwaarde in bepaalde use cases (bijvoorbeeld bij het gebruik van een API gateway).

De geldigheid van deze jwt kan gevalideerd worden door de signature te checken op basis van de gepubliceerde keys van de IDP van Toegangsbeheer (die op het Discovery Endpoint terug te vinden zijn). Dit is vooral nuttig in scenario’s waarbij er met een API gateway gewerkt wordt, waarbij de resource dit jwt kan valideren in plaats van nogmaals de validatie te moeten uitvoeren op het introspection endpoint. Meer details zijn terug te vinden bij de info omtrent de API gateway.