Italiano
  • redirect uri
  • callback
  • authorization code
  • code flow
  • oidc
  • pkce

Comprendere il Redirect URI e il Flusso del Codice di Autorizzazione in OpenID Connect (OIDC)

Diamo uno sguardo più approfondito al redirect URI, poiché è un componente di sicurezza cruciale nel processo di autenticazione OIDC.

Charles
Charles
Developer

Che cos'è un Redirect URI?

Un Redirect URI, noto anche come Reply URL, è un componente di sicurezza critico nel processo di autenticazione OIDC. Specifica l'URL a cui gli utenti vengono inviati dopo aver effettuato con successo l'accesso attraverso un provider OIDC. Ancora più importante, è dove la tua applicazione riceve il codice di autorizzazione necessario per ottenere i token.

Consulta il Auth Wiki > Redirect URI per maggiori dettagli.

Che cos'è il Flusso del Codice di Autorizzazione?

Il Flusso del Codice di Autorizzazione (definito nella OAuth 2.0 RFC 6749, sezione 4.1) è un metodo di autenticazione fondamentale in OIDC. Involge lo scambio di un codice di autorizzazione per un token di accesso e, facoltativamente, un token di aggiornamento. Questo flusso è adatto per applicazioni che possono mantenere in modo sicuro un segreto client, come le applicazioni web lato server.

Consulta il Auth Wiki > Flusso del Codice di Autorizzazione per maggiori dettagli.

Come funziona il Redirect URI nel Flusso del Codice di Autorizzazione?

Nel Flusso del Codice di Autorizzazione, il Redirect URI è la destinazione a cui il provider OIDC invia il codice di autorizzazione dopo che l'utente si è autenticato con successo. Deve essere pre-registrato con il provider OIDC per garantire la sicurezza e prevenire reindirizzamenti non autorizzati.

Ecco come puoi registrare un Redirect URI nel Logto Console: redirect-uri

Quando si avvia un accesso:

  1. Richiesta di autorizzazione: La tua applicazione indirizza l'utente al endpoint di autorizzazione del provider OIDC, includendo parametri come client_id, response_type, scope e il redirect_uri.
  2. Autenticazione dell'utente: L'utente si autentica con il provider OIDC.
  3. Consegna del codice di autorizzazione: Dopo l'autenticazione con successo, il provider OIDC reindirizza l'utente al redirect_uri specificato, includendo un codice di autorizzazione come parametro di query.

Il provider OIDC convalida il redirect_uri rispetto all'elenco di URI pre-registrati. In caso di discrepanza, verrà restituito un errore invalid_redirect_uri, migliorando la sicurezza impedendo che endpoint non autorizzati ricevano i token.

Pratiche migliori per Redirect URI

Nella vita reale, una pratica comune è dichiarare una pagina "Callback" dedicata e associare un router / deep link che consenta l'accesso diretto dall'esterno. Questo link dovrebbe essere usato come il redirect URI.

Supponendo che tu abbia una web app a pagina singola in esecuzione su https://my-app.com, di solito il redirect URI sarebbe dichiarato come https://my-app.com/callback

Oppure se è un'app mobile nativa, allora il redirect URI di solito inizia con uno schema personalizzato, ad esempio com.company://myapp/callback

Altre pratiche migliori includono:

  • Evita i caratteri jolly: Non utilizzare modelli jolly nei redirect URI. Elenca esplicitamente tutti gli URI consentiti per prevenire accessi non autorizzati.
  • Corrispondenza esatta: Assicurati che il redirect URI corrisponda esattamente a quello registrato nel provider OIDC. Anche una barra finale può causare una discrepanza.

Gestire il callback del sign-in

Per gestire il codice di autorizzazione restituito al tuo redirect_uri, segui questi passaggi:

  1. Estrai il codice di autorizzazione: Recupera il parametro del codice dalla stringa di query del redirect URI.

  2. Scambia il codice di autorizzazione per i token: Componi una richiesta POST al endpoint del token del provider OIDC, includendo:

    • client_id: L'ID della tua applicazione nel provider OIDC
    • code: Il codice di autorizzazione ricevuto dal redirect URI
    • code_verifier: Una stringa casuale generata sul client
    • redirect_uri: Lo stesso URI usato nella richiesta di autorizzazione
    • grant_type: Il tipo di concessione, di solito authorization_code

Esempio di richiesta di scambio token in JavaScript

Semplificare il processo di scambio dei codici in Logto sfruttando gli SDK Logto

Gli SDK Logto sono il kit di sviluppo scritto in un linguaggio di programmazione o framework specifico, ad esempio Logto React SDK, Next.js SDK e Swift SDK. Usare un SDK può semplificare notevolmente le cose richiamando solo una o due funzioni.

Ecco un esempio di componente React "Callback" utilizzando l'SDK React ufficiale di Logto:

Le guide per l'integrazione degli SDK possono essere trovate nei Logto Docs > Quick-starts.

Riepilogo: perché è importante padroneggiare i Redirect URI in OIDC

Comprendere i Redirect URI in OIDC con il flusso del codice di autorizzazione è cruciale per proteggere e ottimizzare i tuoi processi di autenticazione. Registrando URI di redirect fidati e gestendo efficientemente i callback di sign-in, puoi garantire un'esperienza fluida e sicura per i tuoi utenti mentre semplifichi i tuoi sforzi di sviluppo con gli SDK Logto.