Comprendere l'importanza della dichiarazione del token "iat" e risolvere l'errore "Invalid issued at time"
In questo post, esploreremo l'importanza della dichiarazione "iat" nel token ID e come risolvere l'errore "Invalid issued at time in ID token".
Comprendere l'importanza della dichiarazione del token “iat” e risolvere l'errore “Invalid issued at time”
Contesto
Nella nostra comunità, di tanto in tanto, sentiamo dai nostri utenti questo problema che fa grattare la testa: “Invalid issued at time in the ID token”. I nostri utenti si lamentano che "Funzionava ieri ma improvvisamente oggi non funziona" o "Funziona su questo computer, ma non sull'altro".
In questo post, esploreremo perché questo problema si verifica in Logto e ti forniremo le conoscenze per affrontarlo.
Introduzione
In OAuth 2.0 e OpenID Connect (OIDC), i token ID svolgono un ruolo vitale nel trasmettere in modo sicuro le informazioni sull'identità dell'utente tra le parti. Una delle dichiarazioni in un token ID è chiamata "iat" (issued-at-time), che rappresenta il timestamp in cui il token ID è stato emesso dal server di autorizzazione.
Allora perché è importante la dichiarazione “iat”?
- Freschezza e scadenza del token: La dichiarazione "iat" fornisce un'informazione cruciale per valutare la freschezza di un token ID. Confrontando il timestamp "iat" con l'ora attuale, le parti fidate possono determinare quanto recentemente il token è stato emesso. Questa informazione è preziosa per le applicazioni che necessitano di assicurare l'uso di informazioni sull'identità aggiornate.
- Mitigazione degli attacchi di riproduzione: La dichiarazione "iat" svolge un ruolo vitale nella mitigazione degli attacchi di riproduzione. In un attacco di riproduzione, un avversario tenta di riutilizzare un token precedentemente intercettato. La dichiarazione "iat" aiuta a rilevare tali attacchi consentendo alla parte fidata di impostare una finestra di tolleranza per l'età del token. I token al di fuori di questa finestra possono essere considerati non validi.
- Imposizione delle politiche di utilizzo del token: Le applicazioni spesso impongono politiche sull'età massima consentita di un token ID per motivi di sicurezza. La dichiarazione "iat" consente alle parti fidate di applicare queste politiche, assicurando che i token siano consumati entro un periodo di tempo specificato. Questo aiuta a minimizzare il rischio associato all'uso di token obsoleti.
- Supporto per la revoca del token: In alcuni scenari, un server di autorizzazione potrebbe aver bisogno di revocare i token emessi. La dichiarazione "iat" è fondamentale nei processi di revoca del token fornendo un timestamp chiaro per quando il token è stato emesso. Semplifica l'identificazione e la revoca di token specifici basati sul loro tempo di emissione.
Best practice per la gestione della dichiarazione “iat”
- Convalida la dichiarazione "iat": Le parti fidate dovrebbero sempre convalidare la dichiarazione "iat" per assicurarsi che rientri in un intervallo accettabile. Questo intervallo può variare a seconda dei requisiti di sicurezza specifici dell'applicazione.
- Considerare la differenza di orario: Consentire un certo grado di differenza di orario quando si confronta il timestamp "iat" con l'ora attuale. La differenza di orario riguarda eventuali differenze temporali potenziali tra il server di autorizzazione e la parte fidata.
- Impostare politiche di scadenza del token: Sfruttare la dichiarazione "iat" in congiunzione con la dichiarazione "exp" (expiration time) per applicare politiche di utilizzo del token complete, migliorando la postura di sicurezza complessiva dell'applicazione.
Risoluzione dei problemi
Ora, la causa principale del famigerato errore “Invalid issued at time” è quasi chiara.
Per mitigare gli attacchi di riproduzione e considerare anche la differenza di orario, Logto in precedenza ha impostato una finestra di tolleranza di 60 secondi per i token ID. Qualsiasi parte fidata che ha una differenza di tempo maggiore di 60 secondi rispetto al tempo mondiale è considerata potenzialmente a rischio e fallirà la convalida del token ID. Quindi, l'errore “Invalid token at time”.
Tuttavia, nel mondo reale, la differenza di orario accade, a volte il tuo computer non riesce a connettersi al server del tempo mondiale per sincronizzare l'orario del computer. A volte, il server di autorizzazione è fuori sincronizzazione. A volte, ancora peggio, entrambi sono fuori sincronizzazione.
Inoltre, in scenari SSO, le differenze di orario tra vari clienti e il provider SSO possono essere ancora più grandi.
Soluzione
Per mitigare il dolore e considerare anche misure di sicurezza, Logto ha ora aumentato la tolleranza iat da 60 secondi a 5 minuti per le autenticazioni non SSO e 10 minuti per gli scenari SSO.
Nel frattempo, puoi controllare se l'orario del tuo computer è sincronizzato con il mondo semplicemente usando questo sito di strumenti pratico: https://time.is Sincronizza il tuo tempo manualmente o cambia server del tempo, per assicurarti che la differenza di tempo sia sempre all'interno della nostra finestra di tolleranza.
Conclusione
La dichiarazione "iat" nei token ID è un elemento cruciale per migliorare la sicurezza della gestione dell'identità e dell'accesso nelle applicazioni moderne. Inserire best practice per la gestione della dichiarazione "iat" assicura un processo di autenticazione dell'identità robusto e sicuro.
Assicurati inoltre che l'orario del tuo computer sia sempre sincronizzato con il server del tempo mondiale.