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.
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:
Quando si avvia un accesso:
- 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 ilredirect_uri
. - Autenticazione dell'utente: L'utente si autentica con il provider OIDC.
- 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:
-
Estrai il codice di autorizzazione: Recupera il parametro del codice dalla stringa di query del redirect URI.
-
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 OIDCcode
: Il codice di autorizzazione ricevuto dal redirect URIcode_verifier
: Una stringa casuale generata sul clientredirect_uri
: Lo stesso URI usato nella richiesta di autorizzazionegrant_type
: Il tipo di concessione, di solitoauthorization_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.