Estoy creando un servidor web para un sitio con autenticación mediante JWT. Dado que este será un sistema disponible públicamente una vez que esté listo, me gustaría saber si el siguiente flujo de autenticación que usa tokens de acceso y actualización de JWT podría considerarse seguro. En este caso, se supone que un servidor sirve tanto a la API de autenticación como a los recursos.
Cuando se inicia el servidor, generará un "ID de ejecución" que es la marca de tiempo UNIX actual y caracteres aleatorios/UUID. Esto se almacena en la memoria y cualquier reinicio generará uno nuevo.
El usuario obtiene un acceso HttpOnly inicial y tokens de actualización al iniciar sesión o registrarse. El token de acceso tiene una vida útil corta (~5 minutos) y el token de actualización tiene una vida útil más larga (~2 horas).
El token de acceso funciona normalmente y contiene el ID de usuario. El token de actualización tiene el ID de usuario, el ID de ejecución del servidor y su propio "ID de token" único (similar al ID de ejecución, único para cada token de actualización)
En lugar de que el usuario llame a un punto final de actualización de token, se crean nuevos tokens de acceso y actualización cuando se llama a un punto final que requiere autorización si se cumplen los siguientes criterios:
En el caso de que no coincida el ID de ejecución o el ID del token se haya puesto en una lista negra, el token de actualización se considera inválido al instante. La lista negra de ID de token se almacena en la memoria (como la ID de ejecución) como una matriz con la ID y el tiempo de vencimiento. Esto permite a un usuario cerrar sesión y poner en la lista negra ese token de actualización específico para que no se use. Esto también permite que cualquier administrador del sistema invalide de emergencia todos los tokens de actualización reiniciando el servidor, ya que el ID de ejecución cambiará.
Me gustaría saber si esto puede considerarse un flujo de autenticación seguro.