Hoe werkt OAuth 2.0
In de huidige samenleving is iedereen bijna altijd online, zo ook de applicaties waarvan de mensen gebruik maken. Als je jouw applicatie niet goed afschermt, kan dit allemaal veiligheidsrisico’s met zich mee brengen. Het kan mogelijk zijn dat één van de accounts van je gebruikers gehackt wordt en dat er zo persoonlijke gegevens van je gebruikers op straat komen te liggen. Daarom is het van belang om goed na te denken over de beveiliging van je applicatie. Een bekend framework welke je kunt gebruiken, is OAuth 2.0.
Met OAuth kun je derden veilig toegang geven tot het gebruik van bijvoorbeeld jouw web API en Http endpoints. Dit gebeurt niet via inloggen maar via een toegangstoken die de derde partij (beperkt) toegang geeft tot jouw applicatie. Dit token bevat allerlei informatie over de aanvrager en kan dus ook rechten en claims bevatten. Vandaar de beperkte toegang.
Daarnaast heeft een token een beperkte geldigheid, na bijvoorbeeld een uur geeft het access token geen toegang meer en moet er opnieuw een token aangevraagd worden. Dit betekent dat de gebruiker opnieuw moet aangeven dat hij/zij recht heeft om het bepaalde endpoint te benaderen. Dit heeft als voordeel dat, mocht het token in verkeerde handen vallen, deze persoon maar een beperkte tijd toegang heeft tot jouw applicatie en daardoor maar beperkte schade kan aanrichten.
Een bijkomend voordeel is dat, mochten de rechten van een bepaalde gebruiker wijziging of mocht een gebruiker in het geheel verwijderd worden, deze wijzigingen na het verstrijken van de geldigheid gelijk ingaan. Als de gebruiker namelijk een nieuw token moet aanvragen dan zal dit token de nieuwe rechten van de gebruiker bevatten of zal er in het geheel geen token meer uitgegeven worden.
Een token wordt aangevraagd met behulp van een client ID en een client secret. Deze worden eenmalig aan de gebruiker verstrekt. Hiermee kan de gebruiker een token aanvragen bij bijvoorbeeld een autorisatie server. Als dit token wordt verstrekt aan de gebruiker, dan kan de gebruiker toegang krijgen tot een bepaald endpoint binnen een web API.
Stel, je bent als gebruiker aan het browsen op een website die gebruik maakt van OAuth 2.0. Moet je dan na het verstrijken van de geldigheidsduur een nieuw toegangstoken aanvragen en dus opnieuw inloggen? Voor dit scenario is een refresh token handig. Met dit token kun je, zonder opnieuw je gegevens te hoeven invullen, een nieuw toegangstoken aanvragen. Een toegangstoken is vaak zeer beperkt geldig, bijvoorbeeld een uur. Een refresh token is langer geldig, bijvoorbeeld een dag. Bij het aanvragen van een nieuw toegangstoken is het wel nodig om je client ID (en in sommige gevallen ook je client secret) mee te sturen. Hierdoor is het niet mogelijk om met alleen het refresh token een nieuw toegangstoken aan te vragen, mocht het refresh token in verkeerde handen vallen dan kan deze persoon er alsnog niets mee zonder de inloggegevens.
De bovenstaande flow ziet er als volgt uit: