Wat is een OAuth scope?

Een “OAuth scope”, “app scope”, of kortweg “scope” is een hulpmiddel binnen het authenticatieprotocol “OAuth 2.0” om de toegang via API’s door OAuth-applicatie te beperken. Door het instellen van scopes kunnen de rechten van een gebruiker binnen een OAuth applicatie (een zogenaamde “client”) verder beperkt worden. Het is niet mogelijk om via scopes meer rechten te verwerven dan de gebruiker zelf heeft in het gebruikte platform.

De OAuth-standaard schrijft geen specifieke mogelijkheden of structuur voor. App scopes zijn gewoon een vooraf gedefinieerde lijst van namen, waarbij de betekenis van elke scopenaam door het gebruikte platform bepaald wordt. De leverancier kan de betekenis van de scopes dus naar eigen inzicht implementeren.

Een applicatie kan geen, één of meer scopes gebruiken.

Voor een API kunnen er meerdere app scope zijn, bijvoorbeeld eentje voor het lezen en eentje voor het schrijven. Maar een app scope kan ook de toegang beperken tot een API of reeks van API’s. Het is zelfs toegestaan dat twee individuele scopes beiden de toegang organiseren tot dezelfde API.

Voorbeelden van (cloud)platformen die scopes gebruiken zijn:

  • Teamleader
  • Exact Online
  • Facebook

Bij sommige platformen worden de scopes meegegeven bij het doorlopen van de OAuth-authenticatieflow van applicatie/client in samenwerking met de Authorization Server. Dit gebeurt bijvoorbeeld bij Teamleader en Facebook. Het resulterende “Access Token” (zeg maar een relatief kortlevend applicatiespecifiek wachtwoord) levert bij gebruik dan alleen toegang op tot de API’s volgens de specificaties van de platformleverancier. In plaats van API’s wordt er ook vaak gesproken over “resources”.

De programmatuur van het platform zal zelf de nodige controles uitvoeren indien de applicatie (“client”) het access token gebruikt om toegang te krijgen.

Bij sommige platformen zoals Exact Online worden de maximaal toegekende scopes centraal vastgelegd bij de applicatie en is er geen mogelijkheid om per authenticatieflow tokens te maken die de rechten beperken anders dan door het beperken van de gebruikersrechten (let op; de Exact Online-implementatie van scopes is niet waterdicht).

Combinaties van het enerzijds opgeven van scopes bij het verwerven van de access tokens en verder centraal beperken van scopes zijn ook technisch mogelijk binnen de OAuth-specificatie, maar komen niet vaak voor.

Scopes Accepteren

OAuth 2 wordt vooral gebruikt door web-gebaseerde applicaties. Een toepassing draait dan binnen een browser. Op de meeste platformen wordt bij het doorlopen van het authenticatieproces een overzicht getoond van de aangevraagde scopes in de browser ter controle. De gebruiker kan dan interactief toestemming verlenen of de gevraagde rechten niet accepteren. Pas na toestemming wordt het access token verstrekt aan de applicatie.

Een voorbeeld van een dergelijke goedkeuring voor Teamleader ziet er als volgt uit (bijgeknipt voor passend maken):

Op Exact Online ziet dat er als volgt uit:

Voorbeelden van OAuth Scopes

De onderstaande tabel toont een aantal voorbeelden van scopenamen in de praktijk:

Platform Scope
Exact Online financial.accounting
logistics.items
organization.administration
Facebook ads_management
ads_read
email
Teamleader companies
contacts
deals

Andere betekenissen van “scope”

De term “scope” kan in relatie tot Invantive SQL en de bijbehorende cloudplatformen op meerdere manieren terugkomen:

  • generiek als in “beperk uw opvraging tot een kleinere scope”: probeer een filter mee te geven,
  • Exact Online division scoping: beperk toegang tot een deel van de Exact Online administraties,
  • Exact Online data scoping: beperk toegang tot een deel van de Exact Online tabellen; feitelijk een vorm van OAuth Scopes.