Sobes.tech
Middle

Wat is OAuth-authenticatie en hoe werkt het?

sobes.tech AI

Antwoord van AI

OAuth is een open standaard voor autorisatie. Het stelt een gebruiker in staat om beperkte toegang te verlenen tot zijn gegevens die op een andere service (resource server) zijn opgeslagen, zonder dat hij zijn inloggegevens (gebruikersnaam/wachtwoord) aan die applicatie hoeft te geven.

Het OAuth-proces is gebaseerd op het uitgeven van "toegangstokens" in plaats van inloggegevens. De typische flow ziet er als volgt uit:

  1. Autorisatieverzoek: De gebruiker probeert een actie uit te voeren in een derde partij applicatie die toegang vereist tot gegevens van de resource server. De applicatie initieert een autorisatieverzoek naar de autorisatieserver van de resource server.
  2. Doorverwijzing naar de autorisatieserver: De gebruiker wordt doorgestuurd naar de pagina van de autorisatieserver.
  3. Gebruikersauthenticatie: De gebruiker authenticatieert zich op de autorisatieserver (indien nog niet gedaan).
  4. Gebruikersinstemming: De autorisatieserver vraagt toestemming aan de gebruiker om een bepaald niveau van toegang tot zijn gegevens toe te staan (scopes). De gebruiker stemt toe of weigert.
  5. Uitgifte van de autorisatiecode: Als de gebruiker akkoord gaat, wordt de gebruiker teruggeleid naar de derde partij applicatie, die een "autorisatiecode" ontvangt.
  6. Uitwisseling van de autorisatiecode voor een toegangstoken: De derde partij applicatie, die de code heeft ontvangen, stuurt een directe aanvraag naar de autorisatieserver om deze code om te wisselen voor een "toegangstoken" en optioneel een "vernieuwingstoken". Deze aanvraag gebeurt tussen servers, zonder tussenkomst van de browser van de gebruiker, wat de veiligheid verhoogt.
  7. Toegang tot gegevens: De derde partij applicatie gebruikt het verkregen toegangstoken om verzoeken te doen aan de resource server namens de gebruiker. Elk verzoek bevat het token in de header.
  8. Tokenvalidatie: De resource server valideert het toegangstoken en, indien geldig en overeenkomend met de gevraagde scopes, verleent toegang tot de gegevens.

OAuth heeft verschillende flows, geschikt voor verschillende scenario’s, bijvoorbeeld:

  • Authorization Code Flow: De meest veilige, gebruikt voor webapplicaties met server-side component.
  • Implicit Flow: Verouderd, gebruikt voor webapplicaties zonder server-side component.
  • Client Credentials Flow: Voor applicaties die toegang krijgen tot hun eigen resources, niet die van de gebruiker.
  • Resource Owner Password Credentials Flow: Niet aanbevolen, het overdragen van gebruikersgegevens aan de applicatie.

(Voorbeeld van Authorization Code Flow)

In C# worden vaak bibliotheken gebruikt zoals ASP.NET Core Identity met verschillende providers (Google, Facebook, etc.), of bibliotheken zoals IdentityServer om een eigen autorisatieserver te maken.