Comprendere il Redirect URI e il Flusso del Codice di Autorizzazione in OpenID Connect (OIDC)
Diamo un'occhiata più da vicino al redirect URI poiché è un componente di sicurezza critico 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 correttamente l'accesso tramite un provider OIDC. Più importante, è dove la tua applicazione riceve il codice di autorizzazione necessario per ottenere i token.
Consulta il wiki del Redirect URI per ulteriori dettagli.
Che cos'è il Flusso del Codice di Autorizzazione?
Il Flusso del Codice di Autorizzazione (definito in 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 del client, come applicazioni web lato server.
Consulta il wiki del Flusso del Codice di Autorizzazione per ulteriori 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 nella Console Logto:
Quando si avvia un accesso:
- Richiesta di autorizzazione: La tua applicazione indirizza l'utente all'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 avvenuta 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 degli URI pre-registrati. Se c'è un disallineamento, verrà restituito un errore invalid_redirect_uri
, migliorando la sicurezza prevenendo l'accesso non autorizzato agli endpoint dal ricevere i token.
Migliori pratiche per i Redirect URI
Nella vita reale, una prassi comune è dichiarare una pagina "Callback" dedicata e associare un router / deep link che consenta l'accesso diretto dall'esterno. Questo link dovrebbe essere utilizzato come redirect URI.
Supponendo che tu abbia un'app web a pagina singola che gira su https://my-app.com
, di solito il redirect URI sarebbe dichiarato come https://my-app.com/callback
Oppure se è un'app mobile nativa, il redirect URI di solito inizia con uno schema personalizzato, ad es. com.company://myapp/callback
Altre migliori pratiche includono:
- Evita 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 un disallineamento.
Gestione del callback di accesso
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 token: Componi una richiesta POST all'endpoint 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 utilizzato nella richiesta di autorizzazionegrant_type
: Il tipo di autorizzazione, di solitoauthorization_code
Richiesta di scambio di token di esempio in JavaScript
Semplificare il processo di scambio del codice in Logto utilizzando gli SDK Logto
Gli SDK Logto sono kit di sviluppo scritti in un linguaggio di programmazione o framework specifico, ad es. SDK React di Logto, SDK Next.js e SDK Swift. Utilizzare un SDK può semplificare notevolmente le cose chiamando solo una o due funzioni.
Ecco un esempio di componente "Callback" React utilizzando l'SDK React ufficiale di Logto:
Le guide per l'integrazione degli SDK possono essere trovate nei documenti di avvio rapido di Logto.
Riepilogo: perché è importante padroneggiare i Redirect URI in OIDC
Comprendere i Redirect URI in OIDC con il flusso del codice di autorizzazione è cruciale per garantire e ottimizzare i tuoi processi di autenticazione. Registrando URI di redirect attendibili e gestendo efficacemente i callback di accesso, puoi garantire un'esperienza senza soluzione di continuità e sicura per i tuoi utenti mentre semplifica i tuoi sforzi di sviluppo con gli SDK di Logto.