Autenticación con AngularJS, gestión de sesiones y problemas de seguridad con REST Api WS

Comencé a desarrollar una aplicación web con angularJS y no estoy seguro de que todo esté bien protegido (cliente y servidor). La seguridad se basa en una sola página de inicio de sesión, si las credenciales se comprueban correctamente, mi servidor devuelve un token único con validez personalizada. Todas las demás api REST son accesibles a través de este token. La aplicación (cliente) navega hasta mi punto de entrada, por ejemplo:https://www.example.com/home.html el usuario inserta las credenciales y recibe un token único. Este token único se almacena en la base de datos del servidor con AES u otras técnicas seguras, no se almacena en un formato claro.

De ahora en adelante, mi aplicación AngluarJS usará este token para autenticar a todas las API de REST expuestas.

Estoy pensando en almacenar temporalmente el token en una cookie http personalizada; Básicamente, cuando el servidor verifica las credenciales, envía una nueva cookie, ej.

app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T

La galleta tiene laseguro ySolo HTTP banderas puestas en. El protocolo HTTP gestiona directamente la nueva cookie y la almacena. Las solicitudes sucesivas presentarán la cookie con el nuevo parámetro, sin la necesidad de administrarla y almacenarla con javascript; en cada solicitud, el servidor invalida el token y genera uno nuevo y lo envía de vuelta al cliente -> evitar ataques de repetición con un solo token.

Cuando el cliente recibe un estado HTTP401 no autorizado En respuesta a cualquier REST Api, el controlador angular limpia todas las cookies y redirige al usuario a la página de inicio de sesión.

¿Debo tener en cuenta otros aspectos? ¿Es mejor almacenar el token dentro de una nueva cookie o en localStorage? ¿Algún consejo sobre cómo generar un token fuerte único?

Editar (mejoras):

Decidí usar HMAC-SHA256 como generador de token de sesión, con 20 minutos de validez. Genero un GUID aleatorio de 32 bytes, adjunto una marca de tiempo y computo el HASH-SHA256 al proporcionar una clave de 40 bytes. Es bastante imposible obtener colisiones ya que la validez del token es bastante mínima.La galleta tendrádominio y ruta Atributos para aumentar la seguridad.No se permiten inicios de sesión múltiples.

Respuestas a la pregunta(3)

Su respuesta a la pregunta