Cómo usar el reclamo jti en un JWT

La especificación JWT menciona un reclamo jti que supuestamente puede usarse como un nonce para evitar ataques de repetición:

El reclamo jti (JWT ID) proporciona un identificador único para el JWT. El valor del identificador DEBE asignarse de una manera que garantice que haya una probabilidad insignificante de que el mismo valor se asigne accidentalmente a un objeto de datos diferente; Si la aplicación utiliza múltiples emisores, las colisiones DEBEN evitarse también entre los valores producidos por diferentes emisores. El reclamo jti se puede utilizar para evitar que se reproduzca el JWT. El valor jti es una cadena sensible a mayúsculas y minúsculas. El uso de este reclamo es OPCIONAL.

Mi pregunta es ¿cómo haría para implementar esto? ¿Debo almacenar los jtis utilizados anteriormente y emitir un nuevo JWT con cada solicitud? Si es así, ¿esto no vence el propósito de los JWT? ¿Por qué usar un JWT en lugar de simplemente almacenar una ID de sesión generada aleatoriamente en una base de datos?

Mi API REST tiene una base de datos mongo y no me opongo a agregar una instancia de redis. ¿Existe una mejor opción de autenticación que JWT? Sin embargo, principalmente no quiero almacenar contraseñas en el cliente, lo que elimina la autenticación HTTP como una opción, sin embargo, a medida que profundizo en estas cosas de JWT, empiezo a sentir que una implementación de token personalizada o un estándar diferente podrían ser mejores satisfacer mis necesidades ¿Hay algún paquete de nodo / express para la autenticación basada en token que admita la revocación de token y los tokens giratorios?

Agradecería cualquier consejo.