Logo Logo
GitHub Designed by Logto

Wat is impliciete flow (implicit flow)?

De OAuth 2.0 impliciete flow (implicit flow) is een authenticatiemethode die client-only applicaties (zoals SPAs en native apps) toestaat om tokens direct via URL-fragmenten van de autorisatieserver te ontvangen zonder een client secret te verstrekken.

Impliciete flow (Implicit flow) is ontworpen voor client-only applicaties, omdat deze volledig in de browser of op het apparaat van de gebruiker draaien en geen client secrets veilig kunnen opslaan.

Impliciete flow (Implicit flow) is officieel afgeschaft in OAuth 2.1 om veiligheidsredenen (die hieronder zullen worden genoemd). Client-only applicaties moeten nu de Autorisatiecode stroom (Authorization code flow) met de Bewijs Sleutel voor Code Uitwisseling (Proof Key for Code Exchange, PKCE) extensie gebruiken.

Hoe werkt impliciete flow (implicit flow)?

De belangrijkste stappen van de impliciete flow (implicit flow) zijn als volgt:

Opmerkingen:

  • De client hoeft alleen een client_id te verstrekken in het autorisatieverzoek, zonder een client_secret te vereisen.
    Dit komt omdat deze clients geen secrets veilig kunnen opslaan, dus deze flow vereist geen client secret.

  • De response_type parameter is ingesteld op token, wat de autorisatieserver instrueert om het access token direct te retourneren in plaats van een autorisatiecode.
    In OIDC ( OpenID Connect (OIDC) ) is de response_type ofwel id_token of id_token token, en de auth service zal de overeenkomstige tokens retourneren op basis van verschillende response types.

  • Het token wordt direct in het URL-fragment geretourneerd. Dit betekent dat het token in de URL wordt blootgesteld en gemakkelijk toegankelijk is voor andere applicaties of scripts.

Is impliciete flow (implicit flow) veilig?

Nee, de impliciete flow (implicit flow) in OAuth 2.0 wordt over het algemeen als minder veilig beschouwd dan andere flows zoals de authorization code flow.

Het wordt niet aanbevolen voor de meeste gebruikssituaties vanwege verschillende kwetsbaarheden:

  • Tokenblootstelling in URL

    • Access tokens verschijnen direct in de URL van de browser (na het # symbool)
    • Deze tokens kunnen:
      • In de browsergeschiedenis worden opgeslagen
      • Via referrer headers worden gelekt
      • Door kwaadaardige JavaScript-code op dezelfde pagina worden onderschept
  • Geen clientauthenticatie

    • De clientapplicatie hoeft zijn identiteit niet te bewijzen
    • Dit betekent dat iedereen die de client_id kent zich kan voordoen als een legitieme client
  • Geen refresh tokens

    • Deze flow ondersteunt geen refresh tokens
    • Gebruikers moeten opnieuw inloggen wanneer access tokens verlopen
    • Om frequente logins te vermijden, kunnen gebruikers tokens op onveilige manieren opslaan
  • Kwetsbaar voor XSS-aanvallen

    • Alle tokens worden in de browser verwerkt
    • Als de website lijdt aan een XSS-aanval (Cross-Site Scripting)
    • Kan de JavaScript-code van aanvallers deze tokens gemakkelijk stelen

Vanwege deze beveiligingsproblemen is impliciete flow (implicit flow) afgeschaft in OAuth 2.1 . Client-only applicaties moeten nu de Autorisatiecode stroom (Authorization code flow) met de Bewijs Sleutel voor Code Uitwisseling (Proof Key for Code Exchange, PKCE) extensie gebruiken.

Je kunt Wat is PKCE: van basisconcepten tot diepgaand begrip bekijken om te leren hoe PKCE de authorization code flow beschermt voor client-only applicaties.

Zie ook