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.
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=Tk9SQ0VfdmFsdWUDen 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.
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
- Authorization Code Flow med OIDC
- Implicit Flow med OIDC
- Hybrid Flow med OIDC
- Bruk av nonce for å hindre replay