De Identity API maakt authenticatie mogelijk voor gebruikers en applicaties die gebruik willen maken van API’s van ANVA. We bieden een identity provider oplossing gebaseerd op OAuth 2.0 en OpenID Connect. Naast het benaderen van de API’s maakt onze OpenID Connect identity provider ook integratie en single sign-on in andere applicaties mogelijk.
De OpenID Connect identity provider biedt ondersteuning voor diverse grant types. Afhankelijk van de toepassing is een bepaald grant type meer of minder geschikt. De grant types die worden ondersteund zijn de ‘authorization code grant’, ‘client credential grant’, ‘implicit grant’ en ‘refresh token grant’.
De authorization code grant is aan te bevelen voor websites en applicaties waar gebruikers zelf acties uitvoeren en gebruik wordt gemaakt van onze API’s. De gebruiker logt zelf met zijn accountgegevens in bij de OpenID Connect identity provider waarbij de client applicatie zelf niet over deze accountgegevens hoeft te beschikken. Als gebruik wordt gemaakt van de authorization code grant, dan wordt ook een refresh token verstrekt. Op basis van de refresh token grant kan een nieuw access token worden verkregen nadat geldigheid van de vorige is verstreken.
De client credential grant is aan te bevelen voor applicaties die vanuit bepaalde (batch)processen onze API’s raadplegen waarbij het niet van belang is dat de acties uit naam van specifieke gebruiker worden uitgevoerd.
We bieden ook ondersteuning voor de implicit grant, maar het gebruik hiervan is inherent kwetsbaarder dan het gebruik van de authorization code grant, omdat het access token via de URI gedeeld wordt met de client applicatie in plaats van in een versleutelde HTTPS body.
De authorization code grant bestaat uit het uitvoeren van een autorisatie request waarmee een autorisatie code opgevraagd wordt. Vervolgens kan met de autorisatie code een token request worden uitgevoerd waarmee een access token opgevraagd wordt.
De autorisatie request kan op de onderstaande wijze worden samengesteld. De opgevraagde autorisatie code zal maximaal 10 minuten geldig zijn.
Endpoint: /identity/authorize
Method: GET
Query Parameters: De volgende parameters dienen in de request opgenomen te worden.
Voorbeeld van request:
/identity/authorize?response_type=code
&scope=openid Basic
&client_id=92c0a4eb-40be-42a6-9f50-597c86666b7b
&state=Clientapp_XYZ
&redirect_uri=https://clientapp.nl/redirect
&nonce= mgEy0yLZ825W
&max_age=28800
&response_mode=query
Voorbeeld van response:
https://clientapp.nl/redirect?code=o3ztCK3W8kQxwpts&state= Clientapp_XYZ
De token request kan op de volgende manier worden samengesteld.
Endpoint: /identity/token
Method: POST
Headers: De volgende parameters moeten in de header van de request worden opgenomen.
Voorbeeld:
‘Authorization’:‘Basic’ OTJjMGE0ZWItNDBiZS00MmE2LTlmNTAtNTk3Yzg2NjY2YjdiOlBiZGtPSmJ0WGpWVktMQ2hFY2ZybGZ2RFlYUlZ4Vw’
Voorbeeld:
‘Content-Type’:’application/x-www-form-urlencoded’
Request Body: De volgende parameters moeten in de body van de request worden opgenomen.
De refresh token grant kan gebruikt worden om op basis van een eerder verkregen refresh token een nieuw access token op te vragen. De token request op basis van de refresh token grant kan op de volgende manier worden samengesteld.
Endpoint: /identity/token
Method: POST
Headers: De volgende parameters moeten in de header van de request worden opgenomen.
Voorbeeld:
‘Authorization’:‘Basic OTJjMGE0ZWItNDBiZS00MmE2LTlmNTAtNTk3Yzg2NjY2YjdiOlBiZGtPSmJ0WGpWVktMQ2hFY2ZybGZ2RFlYUlZ4Vw’
Voorbeeld:
‘Content-Type’:’application/x-www-form-urlencoded’
Request Body: De volgende parameters moeten in de body van de request worden opgenomen.
Deze methode van authenticatie kan worden gebruikt buiten de context van een gebruik om, bijvoorbeeld bij interactie tussen twee systemen waarbij het niet van belang is dat de handelingen uit naam van een gebruiker worden uitgevoerd.
De token request kan op de volgende manier samengesteld worden.
Endpoint: /identity/token
Method: POST
Headers: De volgende parameters moeten in de header van de request worden opgenomen.
Voorbeeld: ‘Authorization’:‘Basic OTJjMGE0ZWItNDBiZS00MmE2LTlmNTAtNTk3Yzg2NjY2YjdiOlBiZGtPSmJ0WGpWVktMQ2hFY2ZybGZ2RFlYUlZ4Vw’
Voorbeeld: ‘Content-Type’:
‘application/x-www-form-urlencoded’
Request Body: De volgende parameters moeten in de body van de request worden opgenomen.
Voorbeeld orgId:
‘scope’:’Basic orgId:7e6bb160-91d9-4093-bc50-9699d446e774′
Voorbeeld orgCode:
‘scope’:’Basic orgCode:organisatiecode′
Access tokens die via de OpenID Connect methode worden gegenereerd, hebben een bepaalde levensduur. Deze levensduur van het access token kan worden geconfigureerd in de OpenID Client op ANVA Hub. Als een token nog geldig is, dan is het de bedoeling (fair use) om dit token bij volgende requests naar de api’s van ANVA Hub (zoals de XML module) te hergebruiken, tot het moment waarop het access token niet meer geldig is. Vanaf dit moment kan uiteraard weer een nieuw access token worden opgevraagd via de OpenID Connect methode. Het is dus niet wenselijk om voor iedere request naar een api op ANVA Hub eerst een nieuw access token op te vragen.
Voor meer informatie over het gebruik en de samenstelling van requests en responses kunt u hier de OpenID Connect specificaties raadplegen.