Logo Logo
GitHub Designed by Logto

Cos’è il flusso ibrido (hybrid flow)?

Il flusso ibrido (hybrid flow) è un processo di autenticazione che combina le caratteristiche del Flusso del codice di autorizzazione (Authorization code flow) e del Flusso implicito (Implicit flow) . Vale la pena notare che il flusso ibrido non fa parte della specifica OAuth 2.0 , ma è un’estensione fornita da OpenID Connect (OIDC) .

Questo flusso è progettato per fornire un equilibrio tra sicurezza e usabilità per l’autenticazione degli utenti. Tuttavia, il flusso ibrido non è raccomandato per le nuove applicazioni a causa delle considerazioni sulla sicurezza associate al flusso implicito. Un’alternativa popolare al flusso ibrido è utilizzare il flusso del codice di autorizzazione (authorization code flow) con Proof Key for Code Exchange (PKCE) per una maggiore sicurezza.

Come funziona il flusso ibrido (hybrid flow)?

Ecco i passaggi principali del flusso ibrido:

  1. Simile ad altri flussi OIDC, il flusso ibrido inizia con il Client che avvia una Richiesta di autenticazione (Authentication request) al OpenID Provider (OP) .

    Nota: Il client dovrebbe includere il parametro response_type con la combinazione di code e almeno uno tra id_token o token, il che significa che ci sono tre possibili combinazioni:

    • code id_token: Il client si aspetta un codice di autorizzazione e un ID token.
    • code token: Il client si aspetta un codice di autorizzazione e un access token.
    • code id_token token: Il client si aspetta un codice di autorizzazione, un ID token e un access token.

    Il requisito è autoesplicativo: il client si aspetta sia un codice di autorizzazione che uno o più token, che corrispondono rispettivamente al flusso del codice di autorizzazione (authorization code flow) e al flusso implicito (implicit flow).

  2. L’utente si autentica sul OpenID Provider (OP) .

  3. Il OpenID Provider (OP) reindirizza l’utente all’applicazione client con il codice di autorizzazione e i token richiesti.

  4. L’applicazione client elabora i token e può utilizzarli per accedere a risorse protette per conto dell’utente; può anche utilizzare il codice di autorizzazione per ottenere token aggiuntivi tramite la Richiesta di token .

Ecco un diagramma di sequenza semplificato del flusso ibrido:

Ecco un esempio non normativo di una richiesta di autenticazione del flusso ibrido:

GET /authorize?response_type=code%20id_token
  &client_id=YOUR_CLIENT_ID
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback
  &scope=openid%20profile%20email
  &nonce=123456
  &state=abc123 HTTP/1.1
Host: your-openid-provider.com

Parametri chiave in una richiesta di autenticazione del flusso ibrido

La richiesta di autenticazione del flusso ibrido include i seguenti parametri chiave:

  • response_type: Il valore dovrebbe essere una combinazione di code e almeno uno tra id_token o token. Ad esempio, code id_token o code token.
  • client_id: L’identificatore del client emesso dal OpenID Provider (OP) (authorization server).
  • redirect_uri: L’URI dove il server di autorizzazione invia l’utente dopo il processo di autenticazione.
  • scope: I scope (permessi) richiesti per i token.
  • resource: Il parametro opzionale che specifica il Indicatore di risorsa per le risorse richieste. Il server di autorizzazione deve supportare RFC 8707 per utilizzare questo parametro.

Per l’elenco completo dei parametri e le loro descrizioni, vedere Authentication using the Hybrid Flow .

Considerazioni sulla sicurezza

Il flusso ibrido include il flusso implicito, noto per le sue limitazioni di sicurezza. I token sono ancora trasmessi tramite il canale frontale (browser), il che può esporli a potenziali attacchi. Il flusso implicito sarà deprecato in OAuth 2.1 a causa di queste preoccupazioni.

Flusso del codice di autorizzazione (Authorization code flow) con Proof Key for Code Exchange (PKCE) è l’alternativa raccomandata al flusso ibrido. Fornisce un modo più sicuro per autenticare gli utenti senza esporre i token nel canale frontale.

Vedi anche