Comprendiendo la importancia del reclamo de token "iat" y solucionando el error "Hora de emisión no válida"
En esta publicación, vamos a explorar la importancia del reclamo "iat" en el token de ID y cómo solucionar el error "Hora de emisión no válida en el token de ID".
Comprendiendo la importancia del reclamo de token “iat” y solucionando el error “Hora de emisión no válida”
Antecedentes
En nuestra comunidad, de vez en cuando, escuchamos de nuestros usuarios sobre este desconcertante problema de “Hora de emisión no válida en el token de ID”. Nuestros usuarios se quejan de que “Funcionaba ayer, pero de repente no funciona hoy” o “Funciona en esta computadora, pero no en la otra”.
En esta publicación, vamos a explorar por qué ocurre este problema en Logto, y te proporcionaremos el conocimiento para abordarlo.
Introducción
En OAuth 2.0 y OpenID Connect (OIDC), los tokens de ID juegan un papel vital en la transmisión segura de la información de identidad del usuario entre las partes. Uno de los reclamos en un token de ID se llama "iat" (hora de emisión), que representa la marca de tiempo en la que el token de ID fue emitido por el servidor de autorización.
Entonces, ¿por qué es importante el reclamo “iat”?
- Frescura y expiración del token: El reclamo "iat" proporciona una información crucial para evaluar la frescura de un token de ID. Al comparar la marca de tiempo "iat" con la hora actual, las partes confiables pueden determinar cuán recientemente se emitió el token. Esta información es valiosa para las aplicaciones que necesitan asegurar el uso de información de identidad actualizada.
- Mitigación de ataques de repetición: El reclamo "iat" desempeña un papel vital en la mitigación de ataques de repetición. En un ataque de repetición, un adversario intenta reutilizar un token interceptado previamente. El reclamo "iat" ayuda a detectar tales ataques al permitir que la parte confiable establezca una ventana de tolerancia para la antigüedad del token. Los tokens fuera de esta ventana pueden considerarse inválidos.
- Aplicación de políticas de uso de tokens: Las aplicaciones a menudo imponen políticas sobre la antigüedad máxima permitida de un token de ID por razones de seguridad. El reclamo "iat" permite a las partes confiables aplicar estas políticas, asegurando que los tokens sean consumidos dentro de un marco de tiempo especificado. Esto ayuda a minimizar el riesgo asociado con el uso de tokens obsoletos.
- Soporte para revocación de tokens: En algunos escenarios, un servidor de autorización podría necesitar revocar tokens emitidos. El reclamo "iat" es fundamental en los procesos de revocación de tokens al proporcionar una marca de tiempo clara de cuándo se emitió el token. Simplifica la identificación y revocación de tokens específicos basados en su tiempo de emisión.
Mejores prácticas para manejar el reclamo “iat”
- Validar el reclamo "iat": Las partes confiables siempre deben validar el reclamo "iat" para asegurar que cae dentro de un rango aceptable. Este rango puede variar dependiendo de los requisitos de seguridad específicos de la aplicación.
- Considerar el desfase de tiempo: Permitir un cierto grado de desfase de tiempo al comparar la marca de tiempo "iat" con la hora actual. El desfase de tiempo considera cualquier diferencia de tiempo potencial entre el servidor de autorización y la parte confiable.
- Establecer políticas de expiración de tokens: Utilizar el reclamo "iat" junto con el reclamo "exp" (hora de expiración) para implementar políticas de uso de tokens integrales, mejorando la postura general de seguridad de la aplicación.
Solución de problemas
Ahora, la causa principal del notorio error “Hora de emisión no válida” es casi clara.
Para mitigar los ataques de repetición y también considerar el desfase de tiempo, Logto estableció anteriormente una ventana de tolerancia de 60 segundos para los tokens de ID. Cualquier parte confiable que tenga una diferencia de tiempo superior a 60 segundos respecto al tiempo mundial se considera potencialmente en riesgo y fallará la validación del token de ID. Por lo tanto, el error “Token inválido en el tiempo”.
Sin embargo, en el mundo real, ocurre el desfase de tiempo, a veces tu computadora no puede conectarse al servidor de tiempo mundial para sincronizar el tiempo de la computadora. A veces, el servidor de autorización está fuera de sincronización. A veces, aún peor, ambos están fuera de sincronización.
Además, en escenarios de SSO, las diferencias de tiempo entre varios clientes y el proveedor de SSO pueden ser aún mayores.
Solución
Para mitigar el problema y también considerando las medidas de seguridad, Logto ha aumentado ahora la tolerancia iat de 60 segundos a 5 minutos para las autenticaciones que no son de SSO, y 10 minutos para escenarios de SSO.
Mientras tanto, puedes verificar si el tiempo de tu computadora está sincronizado con el mundo simplemente usando este sitio de herramientas útil: https://time.is Sincroniza manualmente tu tiempo o cambia a otro servidor de tiempo, para asegurarte de que la diferencia horaria esté siempre dentro de nuestra ventana de tolerancia.
Conclusión
El reclamo "iat" en los tokens de ID es un elemento crucial para mejorar la seguridad de la gestión de identidad y acceso en aplicaciones modernas. Incorporar las mejores prácticas para manejar el reclamo "iat" asegura un proceso de autenticación de identidad sólido y seguro.
También asegúrate de que el tiempo de tu computadora esté siempre sincronizado con el servidor de tiempo mundial.