Claves de firma
Las claves de firma OIDC de Logto, también conocidas como "claves privadas OIDC" y "claves de cookies OIDC", son las claves de firma utilizadas para firmar tokens JWT (tokens de acceso y tokens de ID) y cookies del navegador en las sesiones de inicio de sesión de Logto. Estas claves de firma se generan al sembrar la base de datos de Logto (código abierto) o al crear un nuevo inquilino (Cloud) y se pueden gestionar a través de CLI (código abierto), Management APIs o la interfaz de usuario de la consola.
Por defecto, Logto utiliza el algoritmo de curva elíptica (EC) para generar firmas digitales. Sin embargo, considerando que los usuarios a menudo necesitan verificar firmas JWT y muchas herramientas antiguas no admiten el algoritmo EC (solo admiten RSA), hemos implementado la funcionalidad para rotar claves privadas y permitir a los usuarios elegir el algoritmo de firma (incluyendo tanto RSA como EC). Esto asegura la compatibilidad con servicios que utilizan herramientas de verificación de firmas obsoletas.
Teóricamente, las claves de firma no deberían filtrarse y no tienen un tiempo de expiración, lo que significa que no hay necesidad de rotarlas. Sin embargo, rotar periódicamente la clave de firma después de un cierto período puede mejorar la seguridad.
¿Cómo funciona?
- Clave privada OIDC
Al inicializar una instancia de Logto, se genera automáticamente un par de clave pública y clave privada y se registran en el proveedor OIDC subyacente. Por lo tanto, cuando Logto emite un nuevo token JWT (token de acceso o token de ID), el token se firma con la clave privada. Mientras tanto, cualquier aplicación cliente que reciba un token JWT puede usar la clave pública emparejada para verificar la firma del token, con el fin de asegurar que el token no ha sido manipulado por un tercero. La clave privada está protegida en el servidor de Logto. La clave pública, sin embargo, como su nombre indica, es pública para todos y se puede acceder a través de la interfaz
/oidc/jwks
del punto final OIDC. Se puede especificar un algoritmo de clave de firma al generar la clave privada, y Logto utiliza el algoritmo EC (Curva Elíptica) por defecto. Los usuarios administradores pueden cambiar el algoritmo predeterminado a RSA (Rivest-Shamir-Adleman) rotando las claves privadas. - Clave de cookie OIDC Cuando el usuario inicia un flujo de inicio de sesión o registro, se creará una "sesión OIDC" en el servidor, así como un conjunto de cookies del navegador. Con estas cookies, el navegador puede solicitar a la Experience API de Logto realizar una serie de interacciones en nombre del usuario, como iniciar sesión, registrarse y restablecer la contraseña. Sin embargo, a diferencia de los tokens JWT, las cookies solo son firmadas y verificadas por el servicio OIDC de Logto, no se requieren medidas de criptografía asimétrica. Por lo tanto, no tenemos claves públicas emparejadas para las claves de firma de cookies, ni algoritmos de cifrado asimétrico.
Rotar claves de firma desde la interfaz de usuario de la consola
Logto introduce una función de "Rotación de Claves de Firma", que te permite crear una nueva clave privada OIDC y una clave de cookie en tu inquilino.
-
Navega a Console > Signing keys. Desde allí, puedes gestionar tanto las claves privadas OIDC como las claves de cookies OIDC.
-
Para rotar la clave de firma, haz clic en el botón "Rotar claves privadas" o "Rotar claves de cookies". Al rotar las claves privadas, tienes la opción de cambiar el algoritmo de firma.
-
Y encontrarás una tabla que lista todas las claves de firma en uso. Nota: Puedes eliminar la clave anterior, pero no puedes eliminar la actual.
Estado Descripción Actual Esto indica que esta clave está actualmente en uso activo dentro de tus aplicaciones y APIs. Anterior Se refiere a una clave que se utilizó anteriormente pero que ha sido rotada. Los tokens existentes con esta clave de firma siguen siendo válidos.
Por favor, recuerda que la rotación implica las siguientes tres acciones:
- Crear una nueva clave de firma: Esto requerirá que todas tus aplicaciones y APIs adopten la nueva clave de firma.
- Rotar la clave actual: La clave existente se designará como "anterior" después de la rotación y no será utilizada por las aplicaciones y APIs recién creadas. Sin embargo, los tokens firmados con esta clave seguirán siendo válidos.
- Eliminar tu clave anterior: Las claves etiquetadas como "anteriores" serán revocadas y eliminadas de la tabla.
Nunca rotar las claves de firma consecutivamente (dos o más veces), ya que esto puede invalidar TODOS los tokens emitidos.
- Para los usuarios de OSS, después de rotar la clave de firma, se requiere un reinicio de la instancia de Logto para que la nueva clave de firma surta efecto.
- Para los usuarios de Cloud, la nueva clave de firma surte efecto inmediatamente después de la rotación, pero asegúrate de no rotar la clave de firma varias veces consecutivamente.