Actualización de token JWT (sesiones deslizantes) y cierre de sesión

Soy muy nuevo en JWT y terminé heredando una base de código que hace uso de JWT. Ahora hay algunos problemas muy fundamentales que estoy enfrentando y no encuentro ninguna respuesta. Esta pregunta no está basada en código, así que tengan paciencia conmigo.

Digamos que mi token JWT es válido por 4 horas. Aquí están mis requisitos / restricciones

Si un usuario está trabajando a las 3 horas 59 minutos. su sesión debe extenderse por 2 horas y no se les debe exigir que vuelvan a ingresar sus credenciales.

El script Java del lado del cliente no debe almacenar en caché las credenciales del usuario de ninguna manera.

Está bien actualizar el token JWT con uno nuevo ... pero no debe hacerlo en cada solicitud que realice en el servidor. Por lo tanto, el cliente debe ser inteligente para actualizar el token JWT cuando sea el momento adecuado. No debe intentar emitir un nuevo token en todas y cada una de las solicitudes que realice a la aplicación, porque terminaremos en un escenario en el que tenemos miles de tokens activos generados en el transcurso de una sesión y todos ellos están activos. Esto hace que el requisito de cierre de sesión sea aún más difícil.

Una vez que un usuario hace clic en cerrar sesión. el token JWT ya no debería ser utilizable. A pesar de que su tiempo de vida sigue siendo válido.

Si se produce un cierre de sesión. Todos los tokens que se emitieron (como parte de la extensión de la sesión) deberían quedar invalidados. No solo el último.

Estoy empezando a leer sobre JWT pero parece que mis requisitos no se pueden cumplir con JWT. estos requisitos son muy fáciles de cumplir con el enfoque de id de sesión. pero todavía no quiero renunciar a JWT.

Respuestas a la pregunta(1)

Su respuesta a la pregunta