Los tokens web JSON (JWT) son una forma eficaz de garantizar la seguridad de los datos transmitidos entre el cliente y el servidor en una aplicación NodeJS. JWT es un estándar (RFC-7519) que define una forma compacta y autónoma de pasar información de forma segura entre partes en forma de un objeto JSON. Esta información se puede verificar y confiar porque está firmada digitalmente.
Revocar un JWT es un aspecto crucial a considerar cuando se trabaja con JWT en NodeJS. La revocación es el proceso de inutilizar o invalidar un token JWT. Esto es necesario en muchas situaciones, como cuando un usuario cierra sesión, cuando le roban un token o cuando se hace un mal uso de un token.
Para revocar un JWT, puede utilizar varios métodos. Una forma común es crear una lista negra de tokens. Esta lista negra se puede almacenar en una base de datos o en un caché como Redis. Cuando un usuario cierra sesión o cuando se descubre que un token no es seguro, puede agregar el token a esta lista negra. Luego, durante cada solicitud, puede verificar si el token está en la lista negra. Si es así, puedes rechazar la solicitud.
Otro enfoque es utilizar un token de actualización junto con el token de acceso. En este caso, el token de acceso tiene una vida útil muy corta, digamos 15 minutos. El token de actualización tiene una vida útil más larga, digamos 24 horas. Cuando el token de acceso caduca, el cliente solicita un nuevo token de acceso utilizando el token de actualización. Si se revoca el token de actualización, el cliente no podrá obtener un nuevo token de acceso.
Para implementar la revocación de JWT en NodeJS, puede utilizar el paquete 'jsonwebtoken'. Primero, necesita instalar el paquete usando el comando npm:
npm instala jsonwebtoken
Una vez que instale el paquete, podrá usarlo para crear y verificar tokens JWT. A continuación se muestra un ejemplo de cómo crear un token JWT:
const jwt = require('jsonwebtoken'); carga útil constante = { ID de usuario: '123', }; const secreto = 'mi_clave_secreta'; token const = jwt.sign(carga útil, secreto, {expideIn: '1h' });
En el ejemplo anterior, primero importamos el paquete 'jsonwebtoken'. A continuación, creamos una carga útil que contiene la información que queremos incluir en el token. Luego usamos la función 'firmar' para crear el token. La función 'firmar' toma tres argumentos: la carga útil, la clave secreta y las opciones. Las opciones pueden incluir la duración del token, que en este ejemplo se establece en una hora.
Para verificar y revocar un token, puedes hacer algo como esto:
const jwt = require('jsonwebtoken'); token const = 'the_token_to_verify'; const secreto = 'mi_clave_secreta'; intentar { const decodificado = jwt.verify(token, secreto); // comprueba si el token está en la lista negra si (isTokenInBlacklist(token)) { lanzar nuevo Error('El token está revocado'); } console.log(decodificado); } atrapar (errar) { consola.error(err.mensaje); }
En el ejemplo anterior, primero importamos el paquete 'jsonwebtoken'. Luego definimos el token que queremos verificar y la clave secreta. Usamos la función 'verificar' para verificar el token. Si el token es válido, la función 'verificar' devuelve la carga útil decodificada. Si el token no es válido, la función 'verificar' arroja un error. Luego comprobamos si el token está en la lista negra. Si es así, arrojamos un error.
Trabajar con JWT en NodeJS es una parte importante del desarrollo de aplicaciones seguras. Revocar los JWT es un aspecto crucial a considerar, ya que le permite mantener el control sobre los tokens que están en circulación. Al implementar la revocación de JWT, puede garantizar que los tokens inseguros o no deseados se invaliden, mejorando la seguridad de su aplicación.