2015-06-14 10 views
18

La mia app per dispositivi mobili iOS utilizza servizi implementati con il protocollo OAuth2.0. Il token di accesso OAuth viene fornito con un token di aggiornamento e un campo expires_in. Ho salvato il token di aggiornamento e ho accesso alla scadenza dei token nella mia app, ma non ho una buona idea su quando usarli.Come identificare se il token OAuth è scaduto?

  • Quindi qual è la solita e migliore pratica di utilizzo di questo expires_in?
  • Come identificare che il mio token di accesso è scaduto?
  • Esiste un formato di errore del servizio Web comune che indica che il mio token di accesso è scaduto?

risposta

29

Ecco le informazioni sull'aggiornamento del token OAuth 2.0.

scade nel Definizione

Lo standard OAuth 2.0, RFC 6749, definisce il campo expires_in come il numero di secondi per scadenza:

expires_in: RACCOMANDATO. La durata in secondi del token di accesso. Ad esempio, il valore "3600" indica che il token di accesso scadrà tra un'ora dal momento in cui la risposta è stata generata. Se omesso, il server di autorizzazione DOVREBBE fornire la data di scadenza tramite altri mezzi o documentare il valore predefinito.

Token Refresh trattare: Metodo 1

Alla ricezione di un valore valido access_token, expires_in, refresh_token, ecc, client può elaborare questa memorizzando un tempo di scadenza e di controllo su ogni richiesta. Questo può essere fatto utilizzando la procedura seguente:

  1. convertito expires_in ad un tempo di scadenza (epoca, ISO datetime, ecc)
  2. negozio il tempo
  3. scadenza su ogni richiesta di risorse, controllare l'ora corrente contro il tempo scade e fare una richiesta di aggiornamento token prima che la richiesta di risorse se il access_token è scaduto

Oltre a ricevere un nuovo access_token, è possibile ricevere un nuovo refresh_token un tempo di scadenza f altro in futuro. Se si riceve questo, è necessario memorizzare il nuovo refresh_token per prolungare la durata della sessione.

Token Refresh Manipolazione: Metodo 2

Un altro metodo di gestione token di aggiornamento è quello di aggiornare manualmente dopo aver ricevuto un errore di invalid token. Questo può essere fatto con l'approccio precedente o da solo.

Se si tenta di utilizzare uno access_token scaduto e si riceve un errore di token non valido, è necessario eseguire un aggiornamento del token (se il token di aggiornamento è ancora valido). Poiché diversi servizi possono utilizzare diversi codici di errore per i token scaduti, è possibile tenere traccia del codice per ciascun servizio o un modo semplice per aggiornare i token nei servizi è semplicemente provare un singolo aggiornamento quando si verifica un errore 4xx.

non valido token di accesso Errori

seguito sono riportati alcuni codici di errore da popolari servizi:

  1. Facebook: Error 467 Invalid access token - Token di accesso è scaduto, stato revocato, o altrimenti è valida - Maneggiare token di accesso scaduti.
  2. LinkedIn: Error 401 Unauthorized.
  3. PayPal: Error 401 Unauthorized.

token di aggiornamento scadenza

Se il refresh_token è anche scaduto, è necessario passare attraverso il processo di autorizzazione di nuovo.

+0

Ciao, grazie per la tua risposta! Durante la verifica del tempo di scadenza, cosa succede se l'utente cambia l'ora del dispositivo? Non porterà ad aggiornare troppo spesso il token di accesso? E per quanto riguarda il controllo dell'errore di token non valido, hai qualche idea sul codice di risposta e sul formato dell'errore che il server outh restituirà? E la risposta all'errore sarà la stessa per tutti i server oAuth? – XiOS

+0

Quali sono alcuni casi d'uso per i cambiamenti orari spesso in corso? Le modifiche al fuso orario devono essere gestite automaticamente. Poiché il codice di errore token non valido non è definito nello standard, diversi servizi hanno scelto diversi codici di errore ora elencati sopra. Un semplice approccio di aggiornamento può essere quello di provare un singolo aggiornamento su un errore 4xx come accennato. – Grokify

Problemi correlati