¿Qué es la rotación de tokens de actualización y por qué es importante?
Profundicemos y hablemos sobre por qué la rotación de tokens de actualización es una forma efectiva de proteger la seguridad de tus tokens de actualización.
¿Qué es un token de actualización?
Un token de actualización es un tipo especial de token que se utiliza para obtener un nuevo token de acceso cuando el token de acceso actual expira. Mira nuestra publicación anterior Entendiendo los tokens en OIDC para saber más.
Durante la introducción, también mencionamos que en Logto, con el fin de proteger la seguridad de tu token de actualización, hemos implementado un mecanismo de “rotación de tokens de actualización” por defecto.
Pero, ¿qué es exactamente la “rotación de tokens de actualización”? ¿Cómo beneficia a nuestros usuarios finales? ¡Vamos a profundizar!
¿Qué es la rotación de tokens de actualización?
La rotación de tokens de actualización es un mecanismo que invalida el token de actualización anterior y emite uno nuevo cuando el token de actualización se usa para obtener un nuevo token de acceso. Este mecanismo asegura que el token de actualización se renueve antes de que expire.
¿Por qué necesitamos la rotación de tokens de actualización?
Los tokens de actualización tienen un período de vida prolongado, generalmente de semanas o incluso meses. Y dado que podemos obtener nuevos tokens de acceso mediante el token de actualización, el token de actualización se convierte en un objetivo atractivo para los atacantes también. Por lo tanto, de acuerdo con OAuth 2.0 BCP, el servidor de autorización debe tomar una de las siguientes medidas para prevenir tales ataques.
- Emitir tokens de actualización limitados al remitente: el cliente firma y proporciona una firma (
Sec-Token-Binding
) en el encabezado de solicitud de actualización, por lo que el token de actualización emitido está vinculado criptográficamente a un cliente específico. Sin embargo, solo algunos de los clientes nativos están limitados al remitente en la actualidad, y la mayoría de los SPAs modernos y clientes móviles son públicos. - Rotación de tokens de actualización: el servidor de autorización emite un nuevo token de actualización (típicamente al intercambiar por un nuevo token de acceso) e invalida el anterior. Esto mitiga el riesgo de una fuga de tokens.
Mejores prácticas para implementar la rotación de tokens de actualización
En Logto, cuando un usuario inicia sesión con éxito, primero se creará un objeto Grant
en la base de datos y el token de actualización emitido posteriormente tendrá una referencia grantId
y apuntará al primer objeto Grant.
Cada vez que ocurre una rotación de tokens de actualización, el token de actualización anterior se marcará como consumido, y el servidor de autorización de Logto emitirá un nuevo token de actualización con el mismo grantId
.
Supongamos que el token de actualización anterior se filtró, entonces ya sea el cliente legítimo o el atacante lo habría utilizado para intercambiar un token de acceso. Y no importa quién lo haya hecho, el token de actualización filtrado debe haber sido rotado y marcado como consumido ya. Uno de ellos que utilizó el token de actualización consumido en segundo lugar informará al servidor de autorización de la brecha. El servidor de autorización revocará todos los tokens de actualización con el mismo grantId
.
En el caso anterior, después de activar la alarma, el cliente legítimo solo podrá reautenticarse a través del flujo de inicio de sesión nuevamente para obtener un nuevo token de actualización. El atacante, por otro lado, perderá el control de tu sistema y será bloqueado afuera.
¿Cuándo ocurre la rotación de tokens de actualización?
En Logto, el comportamiento por defecto de una rotación de tokens de actualización define:
- Si el cliente está limitado al remitente o no es público (por ejemplo, aplicaciones web de rendering del lado del servidor), entonces la rotación de tokens de actualización ocurre cuando alcanza el 70% de su tiempo total de vida (TTL).
- Si el cliente es un cliente público (por ejemplo, aplicaciones web de una sola página), la rotación de tokens de actualización ocurre cada vez que se utiliza para intercambiar por un token de acceso. La respuesta del intercambio de tokens devolverá tanto un nuevo token de acceso como un nuevo token de actualización.
¿Cómo puedo habilitar/deshabilitar la rotación de tokens de actualización en Logto?
En el panel de administración de Logto, ve a Console de Administración > Aplicaciones y selecciona la aplicación que te gustaría cambiar la rotación de tokens de actualización. En la página de detalles de la aplicación, ve a la pestaña de “Configuraciones avanzadas” y desplázate hacia abajo hasta el final, encontrarás el interruptor junto con algunas otras configuraciones útiles.
Si apagas el interruptor, tu token de actualización nunca será rotado hasta que expire. Por lo tanto, recomendamos encarecidamente habilitar siempre la rotación de tokens de actualización.
Resumen: ¿Qué es la rotación de tokens de actualización y por qué es importante?
La rotación de tokens de actualización es una práctica recomendada que asegura la seguridad del token de actualización en tu aplicación. Invalida el token de actualización anterior y emite uno nuevo cuando el token de actualización se utiliza para obtener un nuevo token de acceso. Este mecanismo mitiga el riesgo de una fuga de tokens y asegura la seguridad de tu token de actualización.
Logto sigue las mejores prácticas líderes en la industria y siempre pone la seguridad del usuario como la máxima prioridad.
Espero que este blog explique bien tus dudas sobre el mecanismo de rotación de tokens de actualización. Háznos saber si todavía hay algo poco claro. ¡Tus comentarios y sugerencias siempre son bienvenidos!
Prueba Logto hoy y abraza una experiencia de autenticación más segura.