Wat is een autorisatieverzoek (authorization request)?
Afhankelijk van de context kan de term “autorisatieverzoek” (authorization request) naar verschillende dingen verwijzen. In dit artikel zullen we ons richten op de definitie in de OAuth 2.0 specificatie.
In OAuth 2.0 zijn er verschillende types “grant” (flows) die definiëren hoe een Client autorisatie van een gebruiker kan verkrijgen om toegang te krijgen tot beveiligde bronnen.
![Opmerking] “Autorisatieverzoeken” (authorization requests) worden vaak verward met “authenticatieverzoeken” (authentication requests) in de context van OpenID Connect (OIDC) . Zie Authenticatieverzoek (Authentication request) voor OIDC-specifieke details.
Hoe werkt een autorisatieverzoek (authorization request)?
Wanneer een client (applicatie) toegang wil krijgen tot beveiligde bronnen namens een gebruiker, start het een autorisatieverzoek (authorization request) naar de Autorisatieserver (Authorization server) . De client moet het gevraagde “grant” type vermelden samen met de nodige parameters in het verzoek.
Hier zijn enkele typische “grant” types (flows) voor eindgebruiker autorisatie in OAuth 2.0:
- Autorisatiecode stroom (Authorization code flow) : De meest aanbevolen flow voor eindgebruikersautorisatie. Het wordt meestal gebruikt met Bewijs Sleutel voor Code Uitwisseling (Proof Key for Code Exchange, PKCE) voor betere beveiliging en is geschikt voor de meeste applicaties.
- Implicit flow : Een vereenvoudigde flow die gedegradeerd is in OAuth 2.1 vanwege beveiligingsproblemen.
- Resource owner password credentials (ROPC) grant : Een “grant” (flow) waarbij de inloggegevens van de gebruiker direct worden uitgewisseld voor een toegangstoken. Deze flow wordt niet aanbevolen vanwege beveiligingsrisico’s.
Er zijn ook andere extensies, zoals de Apparaatstroom (Device flow) voor apparaten met beperkte invoermogelijkheden. Elke flow heeft zijn eigen kenmerken en toepassingsgebieden. Voor de meeste webapplicaties is de autorisatiecode flow de aanbevolen keuze.
Machine-tot-machine (machine-to-machine) autorisatie wordt typisch uitgevoerd met behulp van de Clientreferentiestroom (client credentials flow) die geen gebruikersinteractie vereist.
Bijvoorbeeld, een client (applicatie) kan autorisatie aanvragen om toegang te krijgen tot de Google Drive bestanden van een gebruiker. Hier is een vereenvoudigd sequentiediagram van de autorisatiecode flow:
Zodra het Toegangstoken (Access token) is verkregen, kan de client dit gebruiken om toegang te krijgen tot de Google Drive bestanden van de gebruiker namens de gebruiker.
Belangrijke parameters in een autorisatieverzoek (authorization request)
Het OAuth 2.0 autorisatieverzoek bevat meestal de volgende parameters:
response_type
: Het type reactie dat de client verwacht. Veelvoorkomende waarden zijncode
voor de autorisatiecode flow entoken
voor de impliciete flow.client_id
: De client identifier uitgegeven door de autorisatieserver.redirect_uri
: De URI waarnaar de autorisatieserver de gebruiker stuurt na het autorisatieproces.scope
: De gevraagde scopes (toestemmingen) voor het toegangstoken.resource
: De optionele parameter die de Resource-indicator voor de gevraagde bronnen specificeert. De autorisatieserver moet RFC 8707 ondersteunen om deze parameter te gebruiken.
De bovenstaande parameters zijn niet uitputtend. De daadwerkelijke parameters en hun waarden zijn afhankelijk van het “grant” type en de specifieke vereisten van de applicatie.