Authenticatie en autorisatie

Voor de autorisatie (op basis van OAuth 2) kan de access token opgehaald worden met de volgende gegevens:

  • onMicrosoftAccount: siviafdtooling
  • UserFlow: B2C_1_Afs_Mapping_Service_Auth

Dit is een ROPC-call, oftewel een Resource Owner Password Credential call en betreft een POST method.

Authenticatie & autorisatie mapping API
Figuur 1: Schematische weergave van autorisatie-call.

Met deze gegevens is de URI van de autorisatie server als volgt:

  • https://siviafdtooling.b2clogin.com/siviafdtooling.onmicrosoft.com/B2C_1_Afs_Mapping_Service_Auth/oauth2/v2.0/token

Client-id

Om een access token te kunnen verkrijgen is een client-id nodig, dit client-id verschilt per SIVI API en wordt verstrekt na aanmelding voor een SIVI API. Indien dit client-id achteraf nogmaals benodigd is, kan dit aangevraagd worden via support@sivi.org.

Login credentials

De login credentials zijn de username en password zoals is aangemaakt bij het systeemaccount.

Een systeemaccount is een niet-persoonlijk account dat aangemaakt kan worden via AFD Online
Samenstellen (https://portal.sivi.org). Voor het aanmaken van het account dient een niet-persoonlijk en bedrijfsgebonden e-mailadres te worden gebruikt. Bijvoorbeeld: service@bedrijfsnaam.nl. Het systeemaccount is alleen bedoeld om te gebruiken via de API’s.

Access token

De autorisatie-call haalt het JWT Bearer token op bij de identity provider. Dit token dient aan de URI
van de API call te worden toegevoegd en de access token kan met onderstaande commando worden opgevraagd:

https://siviafdtooling.b2clogin.com/siviafdtooling.onmicrosoft.com/B2C_1_Afs_Mapping_Service_Auth/oauth2/v2.0/token?username={@ServiceAccount}&password={@Password}&grant_type=password&scope=openid+{@ClientId}+offline_access&client_id={@ClientId}&response_type=token+id_token

Voorbeeld:

https://siviafdtooling.b2clogin.com/siviafdtooling.onmicrosoft.com/B2C_1_Afs_Mapping_Service_Auth/oauth2/v2.0/token?username=service@sivi.org&password=12345&grant_type=password&scope=openid+ab123...789+offline_access&client_id=ab123...789&response_type=token+id_token

Waarbij ab123…789 staat voor het client-id.

Deze call komt met het volgend antwoord:

{
    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGci………hudgfWf2Te",
    "token_type":"Bearer",
    "expires_in":"3600",
    ”refresh_token”: "abXZeXAiOiJKV1QiLCJhbGci………hudgfWf2Te",
    ”id_token”: "eyJ0eXAiOiJKV1QiLCJhbGci………hudgfWf2Te"
}

Waarbij de waarde van “access_token” de access token is die meegegeven moet worden aan de mapping-API. De waarde van “token_type” is altijd “Bearer”. De refresh token kan gebruikt worden om een hernieuwde access token te verkrijgen. De id token geeft de ID van de client aan, deze is niet nodig bij de aanroep van de mapping-API.

Geldigheidsduur

De waarde die teruggegeven wordt met “expires_in” geeft de geldigheidsduur van de access token in seconden. Deze staat momenteel ingesteld op 3600 seconden oftewel 1 uur.

Het ophalen van een access token heeft een relatief grote verwerkingstijd, het is dus raadzaam om dezelfde access token te gebruiken tijdens de geldigheidsduur.

Refresh token

De refresh token wordt gebruikt om een nieuwe access token op te halen. De login credentials worden dan niet meer meegestuurd, maar alleen de client id en de refresh token. De refresh token heeft ook een geldigheidsduur en deze staat momenteel ingesteld op 14 dagen. Echter na het ophalen van de access token met de refresh token wordt er een nieuwe refresh token teruggegeven, die dan weer 14 dagen beschikbaar is. Elke keer moet het meest recent verkregen refresh token worden gebruikt. Op de eerder gebruikte refresh token zit een detectie op ongeautoriseerd gebruik en die token kan dus eerder ongeldig gemaakt zijn. Na het verlopen van de refresh token (of als een refresh token ongeldig is gemaakt) moet een nieuwe access en refresh token worden opgehaald met de login credentials.

Ophalen access en refresh token

De autorisatie-call haalt het JWT Bearer token op bij de identity provider met de refresh token. De nieuwe tokens kunnen met onderstaande commando worden opgevraagd:

https://siviafdtooling.b2clogin.com/siviafdtooling.onmicrosoft.com/B2C_1_Afs_Mapping_Service_Auth/oauth2/v2.0/token?grant_type=refresh_token&client_id={@ClientId}&refresh_token={@RefreshToken}

Voorbeeld:

https://siviafdtooling.b2clogin.com/siviafdtooling.onmicrosoft.com/B2C_1_Afs_Mapping_Service_Auth/oauth2/v2.0/token?grant_type=refresh_token&client_id=ab123...789&refresh_token=rf456...77zz

Waarbij ab123…789 staat voor het client-id en rf456…77zz voor de refresh token.

Het response bericht na aanroep met een refresh token ziet er als volgt uit:

{
    "access_token": "eyJ0eXAiOiJKV1Qi...p-Hy_YrFSiK2aDqA",
    "id_token": "eyJ0eXAiOiJKV1...fTariTFcD7oryEzKswIZvI-RNlxstg",
    "token_type": "Bearer",
    "not_before": 1654005373,
    "expires_in": 3600,
    "expires_on": 1654008973,
    "resource": "92345022-c862-40fa-b921-0711fe8e8b63",
    "id_token_expires_in": 3600,
    "profile_info": "eyJ2ZXIiOiIxLjAiLC...FjY291bnQifQ",
    "scope": "9234...8b63 offline_access openid",
    "refresh_token": "eyJraWQiOiJ...6vTptV4GTEi_IB2Yg",
    "refresh_token_expires_in": 1209600
}

In dit response bericht staan de nieuwe access token en de nieuwe refresh token.

Reactie

Dank voor uw reactie.

Geef uw reactie op dit onderwerp.

Verstuur Reactie