Met OAuth 2.0 kan een externe toepassing veilig toegang krijgen tot de API namens een gebruiker, zonder dat wachtwoorden of API-sleutels gedeeld hoeven te worden.
OAuth is vooral bedoeld voor integraties die door gebruikers zelf geautoriseerd worden — bijvoorbeeld koppelingen met externe applicaties, plugins of mobiele apps.
Een koppeling met OAuth is steeds beperkt tot 1 account. Tijdens de autorisatie zal de gebruiker een selectie maken van de account indien de gebruiker toegang heeft tot meerdere accounts.
Wens je enkel eenvoudig toegang tot je eigen account? Dan raden we het gebruik van een API-sleutel aan. De implementatie met een API-sleutel is namelijk eenvoudiger.
Registratie applicatie
Om gebruik te kunnen maken van OAuth moet je applicatie worden geregistreerd. Contacteer de helpdesk om je applicatie te registreren.
Volgende gegevens moet je doorgeven:
- Naam van de applicatie
- Eén of meerdere redirect url's
- Korte uitleg waarvoor je OAuth binnen je applicatie wenst te gebruiken
Na registratie ontvang je een client_id en client_secret.
Overzicht van het proces
De OAuth 2.0-implementatie volgt de standaard Authorization Code Flow.
Het proces verloopt in drie stappen:
Gebruiker autoriseert de toepassing
De gebruiker wordt doorgestuurd naar de autorisatiepagina.
Daar logt hij in en geeft toestemming voor toegang tot zijn account.Applicatie ontvangt een autorisatiecode
Na goedkeuring wordt de gebruiker teruggestuurd naar deredirect_urivan de toepassing, met een tijdelijke autorisatiecode.Applicatie wisselt de code in voor een access token
De toepassing vraagt een access token aan via het token-endpoint.
Dit token gebruik je vervolgens om geauthenticeerde API-aanroepen uit te voeren.
Endpoints
| Doel | Endpoint | Methode |
|---|---|---|
| Autorisatie starten | /oauth/authorize | GET |
| Token aanvragen | /oauth/token | POST |
Voorbeeld: Authorization Code Flow
1. Gebruiker autoriseren
Stuur de gebruiker naar de volgende URL:
met de volgende queryparameters:
| Parameter | Beschrijving |
|---|---|
client_id | De ID van je geregistreerde toepassing. |
redirect_uri | De URL waarnaar de gebruiker wordt teruggestuurd na autorisatie. |
response_type | Altijd code. |
scope | De toegangsrechten die gevraagd worden, bv. invoices:read clients:manage. |
state | Een willekeurige waarde om verzoeken te verifiëren (aanbevolen). |
prompt | Gebruikt prompt login om te forceren dat de gebruiker steeds moet aanmelden. |
Voorbeeld-URL:
2. Access token aanvragen
Wanneer de gebruiker de toegang goedkeurt, wordt hij teruggestuurd naar:
Gebruik vervolgens deze autorisatiecode om een token aan te vragen:
POST /oauth/token
Body:
Voorbeeld response:
3. API-aanroepen uitvoeren
Gebruik het ontvangen access token bij elke API-aanroep via de HTTP-header:
Tokens vernieuwen
Access tokens hebben een beperkte geldigheidsduur (standaard 1 uur).
Gebruik het refresh_token om een nieuw access token aan te vragen zonder opnieuw te moeten inloggen.
POST /oauth/token
Body:
Scopes
Scopes bepalen tot welke onderdelen van de API de toepassing toegang heeft.
Beschikbare scopes:
| clients:read |
| clients:manage |
| invoices:read |
| invoices:manage |
| receipts:read |
| receipts:manage |
| quotes:read |
| quotes:manage |
| orders:read |
| orders:manage |
| deliveries:read |
| deliveries:manage |
| paymentrequests:read |
| paymentrequests:manage |
| customdocuments:read |
| customdocuments:manage |
| subscriptions:read |
| subscriptions:manage |
| purchases:read |
| purchases:manage |
| products:read |
| products:manage |
| projects:read |
| projects:manage |
| projects:manage:assigned |
| bank:read |
| bank:manage |
| settings:manage |
| account:manage |
| layouts:manage |
| access_control:manage |
Bijkomend moet de gebruiker ook over de nodige rechten te beschikken om binnen een scope te kunnen werken. Dit wordt niet afgedwongen dit het uitvoeren van de OAuth flow.
Veiligheidstips
Gebruik altijd HTTPS voor alle OAuth-verzoeken.
Bewaar refresh tokens op een veilige manier, bij voorkeur op de server.
Vraag enkel de scopes die je nodig hebt.