Asegurar el servicio web REST utilizando token (Java)

Esta pregunta está relacionada de alguna manera con la siguiente pregunta vinculada. Sin embargo, necesito un poco más de claridad sobre algunos aspectos y alguna información adicional. Referir:Implementación de token de autenticación de servicio web REST

Antecedentes:

Necesito implementar seguridad para un servicio web REST usando tokenEl servicio web está diseñado para usarse con el cliente Java. Por lo tanto, la autenticación de formularios y las ventanas emergentes para credenciales no son útiles.Soy nuevo en seguridad REST y encriptación

Esto es lo que he entendido hasta ahora:

Para la primera solicitud:

El usuario establece la conexión https (o el contenedor garantiza que https use 301)Usuario POSTs nombre de usuario y contraseña para iniciar sesión en el servicioSi las credenciales son válidas nosotros:Generar un token temporal aleatorioAlmacene el token aleatorio en el servidor asignándolo al nombre de usuario realCifre el token utilizando una clave simétrica que solo el servidor conoceHash el token cifradoEnviar el token cifrado y el hash al cliente

Para solicitudes posteriores:

El cliente envía esta combinación de token cifrado y hash (¿usando el campo de nombre de usuario de basic?)Nos aseguramos de que el token cifrado no se manipule utilizando el hash y luego lo desciframosVerificamos el token descifrado en la tabla de seguimiento de sesión para una entrada no caducada y obtenemos el nombre de usuario real (¿la caducidad será administrada por código?)Si se encuentra el nombre de usuario, en función de los roles permitidos, las operaciones permitidas se configuran

Más detalles:

Como el cliente es un cliente de Java, la primera solicitud puede ser una POST que contenga las credenciales. Sin embargo, parece que puede exponer las credenciales antes de que se establezca el https. Por lo tanto, ¿debería haber un OBTENCIÓN ficticia para un recurso seguro para que primero se establezca https?Suponiendo que se requiere lo anterior, la segunda solicitud es una POST de LoginAction con credenciales. Esta solicitud se maneja manualmente (sin usar la autorización del contenedor). ¿Es esto correcto?La acción de inicio de sesión anterior devuelve al usuario la combinación de token cifrado + hashEl usuario lo establece en el encabezado que utiliza el mecanismo de autenticación BASIC (nombre de usuario del campo)Implementamos un JAASRealm para descifrar y validar el token, y encontrar los roles permitidosEl resto del proceso de autorización está a cargo del contenedor con WebResourceCollection definido en web.xml

¿Es este el enfoque correcto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta