OAuth2 og OpenID Connect i dybden · leksjon

Bruk av nonce for å hindre replay

Lær hvordan OpenID Connect-parameteren nonce knytter et ID-token til en bestemt autentiseringsforespørsel og beskytter mot replay-angrep på tokener.

Leksjon 4 av 413 trinn

Bruk av nonce for å hindre replay er en gratis leksjon i OAuth2 og OpenID Connect i dybden på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i OAuth2 og OpenID Connect i dybden, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i OAuth2 og OpenID Connect i dybden inneholder totalt 4 leksjoner.

Hva er nonce?

nonce er en tilfeldig verdi som klienten genererer og inkluderer i autentiseringsforespørselen. OpenID-leverandøren gjengir den i det utstedte ID-tokenet. Når verdiene samsvarer, beviser det at tokenet tilhører denne forespørselen.

Trusselen fra replay-angrep

Uten en nonce kan en angriper som fanger opp et gyldig ID-token (for eksempel i Implicit- eller Hybrid-flyten, der tokenene sendes via nettleseren), spille det av på nytt i en annen økt. Nonce knytter tokenet til én bestemt forespørsel og hindrer replay.

nonce kontra state

Dette er ulike verktøy:

  • state — beskytter OAuth2-autorisasjonsforespørselen og -svaret mot CSRF.
  • nonce — beskytter ID-tokenet mot replay og valideres inne i selve tokenet.

Bruk begge i OIDC-flyter.

Generer en nonce

Opprett en tilfeldig verdi med høy entropi, og lagre den knyttet til brukerens økt før omdirigeringen.

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

Ta den med i forespørselen

Legg til nonce i autorisasjonsforespørselen sammen med de vanlige parameterne.

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

Den kommer tilbake i ID-tokenet

Nyttelasten i ID-tokenet inneholder nøyaktig den nonce-verdien De sendte.

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

Valider nonce

Etter at De har validert signaturen og claimene i ID-tokenet, sammenligner De nonce med verdien som er lagret i økten.

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

Når nonce er påkrevd

Nonce er obligatorisk i Implicit- og Hybrid-flytene fordi ID-tokenene returneres via nettleserens frontkanal. I Authorization Code-flyten anbefales den sterkt.

Bruk én gang

Behandle hver nonce som en engangsverdi. Fjern den fra økten så snart den er validert, slik at den samme verdien aldri kan autorisere et nytt token og dermed lukker muligheten for replay.

Vanlige feil

Fallgruver De bør unngå:

  • Å bruke en forutsigbar eller gjenbrukt nonce.
  • Å glemme å sammenligne den etter at signaturen er validert.
  • Å lagre den på klientsiden uten integritetsbeskyttelse.
  • Å hoppe over den i frontkanalflyter.

Sett det hele sammen

Hele livssyklusen: generer nonce, lagre den i økten, send den i autentiseringsforespørselen, motta den i ID-tokenet, verifiser signatur og claims, og sammenlign og forkast deretter nonce. Først da kan autentiseringen stoles på.

Rask kontroll

Test kunnskapen Deres om nonce.

Oppsummering

Nonce beskytter ID-tokens mot replay.

  • Generer en tilfeldig nonce, lagre den i økten og send den i autentiseringsforespørselen.
  • OP gjengir den i ID-tokenet.
  • Valider ved å sammenligne nonce i tokenet med nonce i økten, og forkast den deretter.
  • Påkrevd i Implicit-/Hybrid-flyter; anbefalt overalt.
Gratis å komme i gang

Lær deg OAuth2 og OpenID Connect i dybden med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Bruk av nonce for å hindre replay» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien OAuth2 og OpenID Connect i dybden, inkludert «Bruk av nonce for å hindre replay», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i OAuth2 og OpenID Connect i dybden inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bruk av nonce for å hindre replay»?

Lær hvordan OpenID Connect-parameteren nonce knytter et ID-token til en bestemt autentiseringsforespørsel og beskytter mot replay-angrep på tokener. Du øver på OAuth2 og OpenID Connect i dybden med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med OAuth2 og OpenID Connect i dybden?

Ingen tidligere erfaring er nødvendig. OAuth2 og OpenID Connect i dybden på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Bruk av nonce for å hindre replay»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne OAuth2 og OpenID Connect i dybden-leksjonen?

Ja. Alle OAuth2 og OpenID Connect i dybden-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Authorization Code Flow med OIDC
  2. Implicit Flow med OIDC
  3. Hybrid Flow med OIDC
  4. Bruk av nonce for å hindre replay
← Tilbake til OAuth2 og OpenID Connect i dybden