Refresh token
Een Refresh Token aanvragen (via scope offline_access)
De Client kan aangeven dat er gewerkt moet worden met Refresh Tokens door in het initiële Authenticatie Request de scope “offline_access” toe te voegen. Bij de Token Response wordt dan naast een Access Token ook een Refresh Token meegestuurd.
Tip
Het feit dat men gebruik wenst te maken van Refresh Tokens dient voor de desbetreffende Client expliciet in het integratiedossier meegegeven te worden.
Ook de duurtijd hoe lang men Refresh Tokens mag inruilen wordt in het integratiedossier vastgelegd (en is maximaal 8 uur): deze duurtijd geldt niet voor ieder nieuw Refresh Token, maar wordt geteld vanaf het initiële Authenticatie Request.
Met een Refresh Token een nieuw Access Token aanvragen
Om een nieuw Access Token aan te vragen, gebruikt de Client het ontvangen Refresh Token en stuurt de vraag rechtstreeks naar het Token Endpoint (dus niet via de browser van de eindgebruiker).
Voorbeeld:
POST /op/v1/token HTTP/1.1
Host: authenticatie.vlaanderen.be
Content-Type: application/x-www-form-urlencoded
client_id=28358814-5c20-4c13-bbff-db5dd8c4ae93&
client_secret=CgNjSBQwSolxUcFe7A0U-16j7uccp34-Z5eigKOoCpn5WMHjcb0IkseYA8zhMdYKlpzNJh4Qj4OhjvkVEXq6clvKlutFv5H&
grant_type=refresh_token&
refresh_token=Zeksus34ks2jbsQ-jsbz52Qhzbw14nxj98sznjSHzZe&
scope=openid%20vo%20profile
Het Token Endpoint stuurt dan een nieuw Access Token en een nieuw Refresh Token terug: iedere Refresh Token kan dus slechts één maal gebruikt worden.
Voorbeeld:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token": "FDshzu345jz_qhzjZR98kdjxZ32sjzb24dj-kdz87ek",
"token_type": "Bearer",
"refresh_token": "DZjdxjsh-sjxAZFD2582shx4-sjxhz26fsX87djzAw4",
"expires_in": 3600
}
Het Refresh Token is dus slechts één maal bruikbaar en in het antwoord ontvangt de Client een nieuw Refresh Token.
Indien de duurtijd waarin je Refresh Tokens mag aanvragen verlopen is, dan zal het Token Endpoint antwoorden met volgende foutmelding:
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"error":"invalid_request"
}