Cyber Security Academy · Lezione

OpenID Connect (OIDC)

Aggiungere l'identità a OAuth.

Lezione 2 di 413 passaggi

OpenID Connect (OIDC) è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.

Perché esiste OIDC

OpenID Connect è un sottile livello di identità costruito sopra OAuth 2.0. OAuth risponde alla domanda che cosa può fare questa app; OIDC risponde alla domanda chi è l'utente.

  • Standardizza il modo in cui i client autenticano gli utenti e ricevono claim di identità verificati.
  • Introduce l'ID token come asserzione di autenticazione firmata crittograficamente.

Prima di OIDC, gli sviluppatori usavano impropriamente i token di accesso OAuth per il login, causando vulnerabilità di tipo confused deputy e di impersonificazione.

L'ID token (un JWT)

L'artefatto distintivo di OIDC è l'ID token, un JWT firmato che descrive l'evento di autenticazione.

  • Contiene claim relativi a chi ha effettuato l'accesso e quando.
  • È destinato al client, non al resource server.

Non inviare mai un ID token a un'API come credenziale di accesso e non accettarne mai uno senza convalidarne la firma e i claim.

Header.Payload.Signature
{
  "iss": "https://idp.example",
  "sub": "248289761001",
  "aud": "app123",
  "exp": 1718000000,
  "iat": 1717996400,
  "nonce": "n-abc"
}

Claim fondamentali dell'ID token

Convalidare un ID token significa verificare claim specifici, non solo la firma.

  • iss L'issuer deve corrispondere all'IdP previsto.
  • aud L'audience deve contenere il vostro client_id.
  • exp / iat Il token non deve essere scaduto e deve essere stato emesso di recente.
  • sub Identificatore stabile e univoco dell'utente.
  • nonce Deve corrispondere al valore inviato dal client.

Il flusso di autenticazione OIDC

OIDC riutilizza il flusso Authorization Code, ma aggiunge lo scope openid e un nonce.

  • Il client richiede lo scope openid (oltre agli scope facoltativi profile e email).
  • Il token endpoint restituisce un ID token insieme al token di accesso.
  • Il nonce collega l'ID token alla richiesta originale, impedendone il replay.
GET /authorize?response_type=code
  &scope=openid profile email
  &client_id=app123
  &redirect_uri=https://app.example/cb
  &state=xyz&nonce=n-abc

Convalida della firma con JWKS

I provider OIDC pubblicano le proprie chiavi di firma in un endpoint JWKS, individuabile tramite il documento di configurazione well-known.

  • Recuperare le chiavi da jwks_uri e associare l'header kid del token.
  • Verificare usando l'algoritmo asimmetrico indicato (RS256, ES256).

Rifiutare l'algoritmo none e non fidarsi mai di un valore dell'algoritmo fornito esclusivamente dal token.

GET /.well-known/openid-configuration
  -> { "jwks_uri": "https://idp.example/jwks", ... }
GET /jwks
  -> { "keys": [ { "kid": "k1", "kty": "RSA", ... } ] }

Il nonce protegge dal replay

Il nonce sta agli ID token come state sta al reindirizzamento: un valore monouso che associa la risposta alla richiesta.

  • Il client genera un nonce casuale e lo memorizza nella sessione.
  • L'IdP lo ripete all'interno dell'ID token.
  • Alla ricezione, il client verifica che il nonce corrisponda e non sia già stato usato.

Questo impedisce il replay del token e l'iniezione di un token emesso per una sessione diversa.

L'endpoint UserInfo

Per ottenere ulteriori dati del profilo oltre a quelli presenti nell'ID token, OIDC definisce l'endpoint UserInfo.

  • Il client lo chiama con il token di accesso (non con l'ID token).
  • Restituisce claim come nome, email e immagine per il soggetto autenticato.

Confrontare sempre il sub restituito con il sub dell'ID token per impedire la sostituzione dei claim.

GET /userinfo
Authorization: Bearer <access_token>

-> { "sub": "248289761001", "email": "u@example.com" }

Discovery e metadati

OIDC standardizza il discovery, così i client possono configurare automaticamente gli endpoint e le funzionalità supportate.

  • Il documento /.well-known/openid-configuration elenca gli endpoint, gli scope supportati e gli algoritmi.
  • Eseguire il pinning dell'issuer o convalidarlo; non seguire ciecamente il discovery proveniente da un host controllato da un attaccante.

Il discovery semplifica l'integrazione, ma l'issuer rimane un'ancora di fiducia che è necessario verificare.

Logout front-channel e back-channel

La terminazione della sessione tra app federate è gestita dalle specifiche di logout OIDC.

  • Il logout front-channel usa reindirizzamenti o iframe del browser per cancellare la sessione di ogni relying party.
  • Il logout back-channel invia token di logout tra server, è più affidabile ma richiede endpoint dedicati.

Senza un logout coordinato, un utente può disconnettersi da un'app rimanendo connesso alle altre: un autentico rischio per la gestione delle sessioni.

Insidie comuni di OIDC

I problemi di identità spesso derivano dal saltare i passaggi di convalida.

  • Accettare token senza verificare aud (token destinato a un altro client).
  • Ignorare iss, consentendo lo spoofing dell'IdP.
  • Non convalidare la firma o accettare alg: none.
  • Confondere gli ID token con i token di accesso.
  • Omettere i controlli sul nonce, consentendo il replay.
Validation checklist:
  [ ] iss == expected
  [ ] aud contains client_id
  [ ] exp not passed, iat sane
  [ ] signature verified via JWKS
  [ ] nonce matches session

OIDC e OAuth puro per il login

Se l'obiettivo è il login, usare OIDC, non OAuth puro.

  • I token di accesso OAuth sono opachi al client e non dimostrano nulla sull'identità.
  • Un token di accesso può essere valido per un utente o un'app diversa, causando impersonificazione se usato per il login.
  • Gli ID token OIDC sono esplicitamente asserzioni di identità vincolate all'audience.

Questa distinzione previene la classica vulnerabilità di autenticazione del confused deputy.

Verifica rapida: convalida dell'ID token

Selezionare il passaggio di convalida più critico per una relying party che consuma un ID token.

Riepilogo: OpenID Connect

Punti chiave:

  • OIDC aggiunge un livello di identità a OAuth 2.0; l'ID token è un JWT firmato che dimostra l'autenticazione.
  • Convalidare sempre iss, aud, exp, signature (via JWKS) e nonce.
  • Gli ID token sono destinati al client; i token di accesso alle API; non scambiarne mai i ruoli.
  • Usare nonce contro il replay e state contro il CSRF.
  • Usare OIDC, non OAuth puro, quando è necessario autenticare gli utenti.
Gratis per iniziare

Impara Cyber Security Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
76
Lezioni
303

Domande Frequenti

La lezione «OpenID Connect (OIDC)» è gratuita?

Sì — il testo completo di «OpenID Connect (OIDC)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.

Cosa imparerò in «OpenID Connect (OIDC)»?

Aggiungere l'identità a OAuth. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cyber Security Academy?

Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «OpenID Connect (OIDC)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?

Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Flussi OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML e federazione
  4. Attacchi ai token e hardening
← Torna a Cyber Security Academy