OAuth2 en OpenID Connect diepgaand bekeken · Les

Nonce gebruiken om replay te voorkomen

Leer hoe de OpenID Connect nonce-parameter een ID-token aan een specifieke authenticatierequest koppelt en beschermt tegen token-replayaanvallen.

Les 4 van 413 stappen

Nonce gebruiken om replay te voorkomen is een gratis OAuth2 en OpenID Connect diepgaand bekeken-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject OAuth2 en OpenID Connect diepgaand bekeken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.

Wat is de nonce?

De nonce is een willekeurige waarde die de client genereert en in het authenticatieverzoek opneemt. De OpenID Provider stuurt deze terug in het uitgegeven ID-token. Als de waarden overeenkomen, bewijst dat dat het token bij dit verzoek hoort.

De dreiging van herhaling

Zonder nonce kan een aanvaller die een geldig ID-token onderschept (bijvoorbeeld in de Implicit- of Hybrid-flow, waarin tokens via de browser worden verstuurd), dit opnieuw afspelen in een andere sessie. De nonce koppelt het token aan één specifiek verzoek en voorkomt zo herhaling.

nonce versus state

Het zijn verschillende hulpmiddelen:

  • state — beschermt het OAuth2-autorisatie-verzoek/antwoord tegen CSRF.
  • nonce — beschermt het ID-token tegen herhaling en wordt in het token zelf gevalideerd.

Gebruik ze allebei in OIDC-flows.

Een nonce genereren

Maak een willekeurige waarde met hoge entropie en sla die vóór de omleiding gekoppeld aan de sessie van de gebruiker op.

import secrets
nonce = secrets.token_urlsafe(32)
session['oidc_nonce'] = nonce
print(nonce)

Opnemen in het verzoek

Voeg de nonce samen met de gebruikelijke parameters toe aan het autorisatieverzoek.

GET /authorize?
  response_type=code
  &client_id=app123
  &scope=openid profile
  &redirect_uri=https://app.example.com/cb
  &state=xyz
  &nonce=Tk9SQ0VfdmFsdWU

De nonce komt terug in het ID-token

De payload van het ID-token bevat exact de nonce die je hebt verstuurd.

{
  "iss": "https://op.example.com",
  "sub": "248289",
  "aud": "app123",
  "nonce": "Tk9SQ0VfdmFsdWU",
  "exp": 1735689600
}

De nonce valideren

Vergelijk na het valideren van de handtekening en claims van het ID-token de nonce ervan met de waarde die in de sessie is opgeslagen.

if id_token['nonce'] != session.pop('oidc_nonce', None):
    raise Exception('nonce mismatch - reject token')

Wanneer nonce verplicht is

De nonce is verplicht in de Implicit- en Hybrid-flows, omdat ID-tokens via het front channel van de browser worden teruggestuurd. In de Authorization Code-flow wordt de nonce aanbevolen en sterk aangeraden.

Eenmalig gebruik

Behandel elke nonce als eenmalig te gebruiken. Verwijder deze uit de sessie zodra hij is gevalideerd, zodat dezelfde waarde nooit een tweede token kan autoriseren en mogelijkheden voor herhaling worden afgesloten.

Veelgemaakte fouten

Valkuilen die je moet vermijden:

  • Een voorspelbare of opnieuw gebruikte nonce gebruiken.
  • Vergeten de nonce te vergelijken nadat je de handtekening hebt gevalideerd.
  • De nonce aan de clientzijde opslaan zonder integriteitsbescherming.
  • De nonce overslaan in front-channelflows.

Alles samenbrengen

De volledige levenscyclus: nonce genereren, in de sessie opslaan, in het authenticatieverzoek meesturen, in het ID-token ontvangen, handtekening en claims verifiëren, en de nonce daarna vergelijken en verwijderen. Pas dan vertrouw je de authenticatie.

Korte controle

Test je kennis van de nonce.

Samenvatting

De nonce beschermt ID-tokens tegen herhaling.

  • Genereer een willekeurige nonce, sla die op in de sessie en stuur hem mee in het authenticatieverzoek.
  • De OP stuurt hem terug in het ID-token.
  • Valideer door de nonce van het token te vergelijken met de nonce van de sessie en verwijder hem daarna.
  • Verplicht in Implicit-/Hybrid-flows; overal aanbevolen.
Gratis beginnen

Leer OAuth2 en OpenID Connect diepgaand bekeken met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Nonce gebruiken om replay te voorkomen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad OAuth2 en OpenID Connect diepgaand bekeken, waaronder “Nonce gebruiken om replay te voorkomen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.

Wat leer ik in “Nonce gebruiken om replay te voorkomen”?

Leer hoe de OpenID Connect nonce-parameter een ID-token aan een specifieke authenticatierequest koppelt en beschermt tegen token-replayaanvallen. Je oefent met OAuth2 en OpenID Connect diepgaand bekeken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met OAuth2 en OpenID Connect diepgaand bekeken te beginnen?

Ervaring vooraf is niet nodig. OAuth2 en OpenID Connect diepgaand bekeken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Nonce gebruiken om replay te voorkomen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over OAuth2 en OpenID Connect diepgaand bekeken?

Ja. Elke les over OAuth2 en OpenID Connect diepgaand bekeken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Authorization Code Flow met OIDC
  2. Implicit Flow met OIDC
  3. Hybrid Flow met OIDC
  4. Nonce gebruiken om replay te voorkomen
← Terug naar OAuth2 en OpenID Connect diepgaand bekeken