Grant Type Implicit in OAuth 2.0

Il Grant Type Implicit, noto anche come metodo "token", è stato progettato principalmente per applicazioni lato client in cui il client non può memorizzare in modo sicuro un client secret. Tali applicazioni includono single-page app (SPA) o altre applicazioni basate su browser. Invece di ricevere un codice di autorizzazione da scambiare con un token di accesso, l'applicazione ottiene il token di accesso direttamente.

Grant Type Implicit in LoadFocus

Come Funziona il Grant Type Implicit?

  1. Reindirizzamento:
  • L'applicazione client reindirizza l'utente all'endpoint di autorizzazione del server di autorizzazione OAuth 2.0. Questo reindirizzamento include solitamente parametri di query come client_id, response_type (impostato su "token" per il Grant Implicit), redirect_uri (dove il server di autorizzazione reindirizzerà dopo aver concesso/negato l'accesso) e scope (che indica il livello di accesso richiesto).
  1. Autenticazione dell'Utente:
  • L'utente accede al server di autorizzazione (se non già autenticato) e rivede la richiesta di accesso dell'applicazione client.
  1. Emissione del Token di Accesso:
  • Se l'utente concede l'accesso, il server di autorizzazione lo reindirizza all'applicazione client tramite il redirect_uri fornito. L'URI di reindirizzamento include il token di accesso (e la sua scadenza) direttamente nella parte fragment dell'URL.
  1. Accesso alla Risorsa Protetta:
  • L'applicazione client estrae il token di accesso dal fragment dell'URL e lo memorizza (es. in localStorage o in una sessione). Utilizza poi questo token per effettuare richieste al server delle risorse (API) per conto dell'utente.

Come Configurare il Grant Type Implicit?

  1. Registrare la Vostra Applicazione:
  • Iniziate registrando la vostra applicazione presso il provider OAuth 2.0. Riceverete tipicamente un client_id dopo la registrazione riuscita.
  1. Configurazione dell'URI di Reindirizzamento:
  • Fornite un redirect_uri durante la registrazione. Il server di autorizzazione reindirizzerà gli utenti a questo URI dopo che decidono di concedere o negare l'accesso. Assicuratevi che questo URI sia sicuro (tipicamente utilizzando HTTPS) e possa gestire l'estrazione del token dal fragment dell'URL.
  1. Avviare il Flusso OAuth:
  • Reindirizzate gli utenti all'endpoint di autorizzazione del server di autorizzazione con i parametri necessari. Utilizzate librerie o SDK adatti al linguaggio o framework della vostra applicazione per facilitare questo.
  1. Estrarre e Memorizzare il Token:
  • Una volta reindirizzati, estraete il token di accesso dal fragment dell'URL. Memorizzate il token in modo sicuro, considerando opzioni di archiviazione lato client come Web Storage (localStorage o sessionStorage) o cookie. Assicuratevi che sia protetto da attacchi cross-site scripting (XSS).
  1. Utilizzare il Token:
  • Allegate il token di accesso alle richieste API effettuate al server delle risorse.
  1. Gestire la Scadenza del Token:
  • Poiché il Grant Implicit solitamente non fornisce refresh token, quando un token di accesso scade, potreste dover riavviare il flusso OAuth per ottenerne uno nuovo.

Considerazioni:

  • Sicurezza: Il Grant Type Implicit è considerato meno sicuro del Grant Type Authorization Code, specialmente perché il token di accesso è esposto nell'URL. Questo potrebbe essere un rischio in ambienti in cui gli URL possono essere registrati o accessibili da terze parti.

  • Nessun Refresh Token: Tipicamente, il Grant Implicit non fornisce refresh token. Quindi, quando un token di accesso scade, potrebbe essere necessario ripetere l'intero flusso.

  • Deprecazione: A causa delle sue preoccupazioni intrinseche sulla sicurezza, il documento OAuth 2.0 Security Best Current Practice raccomanda di evitare il Grant Implicit a favore dell'Authorization Code con PKCE (Proof Key for Code Exchange) per client pubblici, come le SPA.

Conclusione:

Sebbene il Grant Type Implicit offra un flusso più semplice per le app lato client, le sue preoccupazioni sulla sicurezza hanno portato a raccomandazioni contro il suo utilizzo nelle applicazioni moderne. Se state costruendo nuove applicazioni, specialmente SPA, considerate l'utilizzo del Grant Type Authorization Code con PKCE per un approccio più sicuro.