Ik heb een REST API die ik moet beveiligen en ben me daarom aan het verdiepen in OAuth2 als mogelijke optie. Tot zo ver ik begrijp is het een framework voor gedelegeerde authorisatie. Dat wil zeggen dat een client (app) de resources van een user kan gebruiken door aan de user toestemming te vragen via het platform waar de gegevens zich bevinden. Hierbij kan de client (app) een aantal scopes/permissions opgeven, zodat de gebruiker weet welke gegevens de client (app) nodig heeft.
Binnen mijn backend hebben geregistreerde users één of meer roles die bepalen welke permissies ze hebben. Mijn verwarring is dat binnen OAuth2 de permissies (scopes) worden bepaald door de client (app) en niet door de gebruiker. Dat is logisch als je als je app gebruikt maakt van gegevens van de gebruiker bij een 3de partij (gedelegeerde authorisatie), maar niet als je de gegevens op je eigen REST API met de rechten van je eigen gebruikers via je eigen app wilt beheren.
Overal lijkt iedereen OAuth2 aan te raden om REST APIs te beveiligen, maar tot zo ver ik begrijp lijkt het helemaal niet gemaakt voor situaties waarbij je simpelweg je eigen gebruikers wilt laten aanmelden op je REST API? Momenteel lijkt het me het eenvoudigst een variatie op HTTP Basic Auth te gebruiken waarbij de gebruiker zijn credentials via Basic Auth omwisselt voor een access token. Deze access token is dan een een performante manier om aan Basic Auth te doen zonder de overhead van password hashing (bcrypt, argon, ...). Dit lijkt op de OAuth2 ROPC grant type, maar op deze manier kan ik in ieder geval mijn eigen roles gebruiken.
Wat mis ik hier?
Binnen mijn backend hebben geregistreerde users één of meer roles die bepalen welke permissies ze hebben. Mijn verwarring is dat binnen OAuth2 de permissies (scopes) worden bepaald door de client (app) en niet door de gebruiker. Dat is logisch als je als je app gebruikt maakt van gegevens van de gebruiker bij een 3de partij (gedelegeerde authorisatie), maar niet als je de gegevens op je eigen REST API met de rechten van je eigen gebruikers via je eigen app wilt beheren.
Overal lijkt iedereen OAuth2 aan te raden om REST APIs te beveiligen, maar tot zo ver ik begrijp lijkt het helemaal niet gemaakt voor situaties waarbij je simpelweg je eigen gebruikers wilt laten aanmelden op je REST API? Momenteel lijkt het me het eenvoudigst een variatie op HTTP Basic Auth te gebruiken waarbij de gebruiker zijn credentials via Basic Auth omwisselt voor een access token. Deze access token is dan een een performante manier om aan Basic Auth te doen zonder de overhead van password hashing (bcrypt, argon, ...). Dit lijkt op de OAuth2 ROPC grant type, maar op deze manier kan ik in ieder geval mijn eigen roles gebruiken.
Wat mis ik hier?