Connessione OpenID (OIDC)

Autore:Mikkel Haldorsen
Aggiornato:4 mag 2025

Scopri come OpenID Connect migliora l'autenticazione basandosi sul protocollo OAuth 2.0 per fornire un modo sicuro e standardizzato per autenticare gli utenti.

Indice dei contenuti

  1. Cos'è OpenID Connect?
  2. Come funziona OIDC
  3. Informazioni su OAuth 2.0
  4. Vantaggi di OIDC
  5. ID Token Spiegato
  6. Implementazione di OIDC
  7. Considerazioni sulla sicurezza
  8. Risoluzione dei problemi
  9. Glossario

Cos'è OpenID Connect?

OpenID Connect (OIDC) è un livello di identità basato sul protocollo OAuth 2.0. Consente ai client (come Esadax) di verificare l'identità degli utenti in base all'autenticazione eseguita da un server di autorizzazione.

  • Sviluppato dalla OpenID Foundation.
  • Ampiamente adottato nelle moderne applicazioni web e mobile.
  • Utilizzato da Google, Microsoft, Auth0, Okta e altri.

Come funziona OIDC

  1. L'utente tenta di accedere all'applicazione client.
  2. Il client reindirizza l'utente all'Identity Provider (IdP).
  3. L'utente si autentica con l'IdP (ad esempio, nome utente + password, 2FA).
  4. IdP reindirizza di nuovo al client con un token ID e (facoltativamente) un token di accesso.
  5. Il client verifica la firma e le rivendicazioni del token ID.
  6. L'utente viene autenticato e viene creata una sessione.

Informazioni su OAuth 2.0

Caratteristica Supporto per OAuth 2.0 Connessione OpenID (OIDC)
Scopo Autorizzazione Autenticazione
Tipo di token Token di accesso Token ID + Token di accesso
Identità dell'utente Non è garantito Esplicitamente forniti
Accesso ai dati del profilo Richiede ambiti extra Supportato tramite ambito openid
Rivendicazioni standardizzate No. Sì.

✅ OIDC = OAuth 2.0 + identità + informazioni utente standardizzate.


Vantaggi di OIDC

  • Interoperabilità: standard per molti fornitori e piattaforme.
  • Sicurezza: utilizza token firmati e flussi comprovati.
  • Flessibilità: funziona per app Web, app mobili e API.
  • Scalabilità: ideale per sistemi distribuiti o multi-tenant.
  • Identità federata: un unico accesso funziona per molti servizi.

ID Token Spiegato

Un ID Token è un JWT (JSON Web Token) che contiene informazioni sull'utente.

  • Richieste di risarcimento comuni:
    • sub: Oggetto (user ID)
    • email: Indirizzo email dell'utente
    • name: Nome completo
    • iat: Rilasciato il
    • exp: Data di scadenza
    • iss: Emittente
    • aud: Pubblico (la tua app)

Esempio di payload di token ID decodificato:

{
  "sub": "1234567890",
  "name": "Jane Doe",
  "email": "jane@esadax.com",
  "iat": 1692547200,
  "exp": 1692550800,
  "iss": "https://auth.provider.com",
  "aud": "esadax-app"
}

Implementazione di OIDC

  1. Scegli un provider: Google, Auth0, Okta o self-hosted (ad esempio, Keycloak).

  2. Registra la tua Applicazione: Ottieni un ID cliente e un client secret.

  3. Reindirizza gli utenti al provider:

    • Includere response_type=code e scope=openid.
  4. Gestire il callback:

    • Scambia il codice per i token utilizzando l'endpoint /token del provider.
  5. Verifica ID Token:

    • Controllare la firma, aud, exp e altre rivendicazioni.
  6. Crea una sessione:

    • Utilizzare i dati del token per autenticare l'utente nel sistema.

Considerazioni sulla sicurezza

  • Convalida sempre i token ID sul lato server.
  • Usa HTTPS per evitare l'intercettazione dei token.
  • Impostare brevi periodi di vita del token e ruotare i segreti.
  • Verificare nonce per evitare attacchi di replay.
  • Usa PKCE (Proof Key for Code Exchange) per client pubblici come SPA e app mobili.

Risoluzione dei problemi

  • Firma del token non valida?

    • Assicurati di utilizzare la chiave pubblica corretta (JWKS).
  • Pubblico non valido (aud)?

    • Verifica che il token sia stato emesso per il tuo ID cliente.
  • Token scaduto?

    • Aggiorna il token o autentica nuovamente l'utente.
  • Il provider non reindirizza?

    • Verifica che l'URI di reindirizzamento corrisponda a quello registrato.

Glossario

  • OIDC: OpenID Connect, un livello di identità in cima a OAuth 2.0.
  • OAuth 2.0: Un protocollo per autorizzare l'accesso alle risorse.
  • IdP: Identity Provider (ad esempio, Google, Okta) che autentica l'utente.
  • Token ID: un JWT che conferma l'identità dell'utente.
  • Token di accesso: token utilizzato per accedere alle API protette.
  • PKCE: estensione di sicurezza per OAuth 2.0 per client pubblici.