Logo Logo
GitHub Designed by Logto

Wat is hybride stroom (Hybrid flow)?

De hybride stroom (Hybrid flow) is een authenticatieproces dat de kenmerken combineert van de Autorisatiecode stroom (Authorization code flow) en de Implicit flow . Het is belangrijk op te merken dat de hybride stroom geen onderdeel is van de OAuth 2.0 specificatie, maar een uitbreiding is die wordt geboden door OpenID Connect (OIDC) .

Deze stroom is ontworpen om een balans te bieden tussen veiligheid en bruikbaarheid voor gebruikersauthenticatie. Echter, de hybride stroom wordt niet aanbevolen voor nieuwe applicaties vanwege de veiligheidsoverwegingen die gepaard gaan met de impliciete stroom. Een populair alternatief voor de hybride stroom is het gebruik van de autorisatiecode stroom (authorization code flow) met Bewijs Sleutel voor Code Uitwisseling (Proof Key for Code Exchange, PKCE) voor betere beveiliging.

Hoe werkt de hybride stroom (Hybrid flow)?

Hier zijn de belangrijkste stappen van de hybride stroom:

  1. Net als andere OIDC stromen, begint de hybride stroom met de Client die een Authenticatieverzoek (Authentication request) naar de OpenID Provider (OP) initieert.

    Opmerking: De client moet de response_type parameter opnemen met de combinatie van code en ten minste één van id_token of token, wat betekent dat er drie mogelijke combinaties zijn:

    • code id_token: De client verwacht een autorisatiecode en een ID-token.
    • code token: De client verwacht een autorisatiecode en een toegangstoken (access token).
    • code id_token token: De client verwacht een autorisatiecode, een ID-token en een toegangstoken (access token).

    De eis is duidelijk: de client verwacht zowel een autorisatiecode als een of meer tokens, wat respectievelijk overeenkomt met de autorisatiecode stroom (authorization code flow) en de impliciete stroom (implicit flow).

  2. De gebruiker authenticeert zich op de OpenID Provider (OP) .

  3. De OpenID Provider (OP) leidt de gebruiker terug naar de clientapplicatie met de autorisatiecode en de aangevraagde tokens.

  4. De clientapplicatie verwerkt de tokens en kan ze gebruiken om namens de gebruiker toegang te krijgen tot beveiligde bronnen; het kan ook de autorisatiecode gebruiken om extra tokens te verkrijgen via de Tokenaanvraag (Token request) .

Hier is een vereenvoudigd sequentiediagram van de hybride stroom:

Hier is een niet-normatief voorbeeld van een hybride stroom authenticatieverzoek:

GET /authorize?response_type=code%20id_token
  &client_id=YOUR_CLIENT_ID
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback
  &scope=openid%20profile%20email
  &nonce=123456
  &state=abc123 HTTP/1.1
Host: your-openid-provider.com

Belangrijke parameters in een hybride stroom authenticatieverzoek

Het hybride stroom authenticatieverzoek omvat de volgende belangrijke parameters:

  • response_type: De waarde moet een combinatie zijn van code en ten minste één van id_token of token. Bijvoorbeeld, code id_token of code token.
  • client_id: De clientidentifier uitgegeven door de OpenID Provider (OP) (autorisatieserver).
  • redirect_uri: De URI waar de autorisatieserver de gebruiker naartoe stuurt na het authenticatieproces.
  • scope: De aangevraagde scopes (machtigingen) voor de tokens.
  • resource: De optionele parameter die de Resource-indicator voor de aangevraagde bronnen specificeert. De autorisatieserver moet RFC 8707 ondersteunen om deze parameter te kunnen gebruiken.

Voor de volledige lijst van parameters en hun beschrijvingen, zie Authenticatie met de Hybrid Flow .

Veiligheidsoverwegingen

De hybride stroom omvat de impliciete stroom, die bekend staat om zijn beveiligingsbeperkingen. Tokens worden nog steeds via het frontkanaal (browser) verzonden, wat ze blootstelt aan mogelijke aanvallen. De impliciete stroom zal worden uitgefaseerd in OAuth 2.1 vanwege deze zorgen.

Autorisatiecode stroom (Authorization code flow) met Bewijs Sleutel voor Code Uitwisseling (Proof Key for Code Exchange, PKCE) is het aanbevolen alternatief voor de hybride stroom. Het biedt een veiliger manier om gebruikers te authenticeren zonder tokens in het frontkanaal bloot te stellen.

Zie ook