¿Cómo mejorar la autorización y el esquema de interacción cliente-servidor?

0

Estoy creando un servidor Qt que utiliza SSL a través de TCP. Los clientes pueden autorizarse en el servidor mediante inicio de sesión y contraseña y convertirse en usuarios. Solo los usuarios pueden realizar acciones con sus cuentas. Los clientes no autorizados solo pueden autorizarse ellos mismos.
Ahora la autorización se ve así:

  1. El cliente se conecta al servidor.
  2. El cliente envía las credenciales (inicio de sesión, contraseña) al servidor.
  3. El servidor autentica las credenciales y autoriza al cliente como algún usuario, esto solo significa que ahora el socket de ese cliente está autorizado como usuario, pero el servidor no tiene ningún "token" y / o algunas otras cosas.

Como puede ver, este esquema no está completo y no es seguro.
Entonces, la pregunta principal: ¿cómo debo mejorarlo?

Al principio creo que debería usar los tokens de autenticación. Tengo que generarlos en el servidor después de la autorización del cliente y enviarlos al cliente. Después de eso, el cliente debe enviar este token al servidor en cada solicitud como confirmación de su autenticidad.
Sin embargo, tengo muchas preguntas al respecto y no solo:

  1. ¿Cómo debo generarlas? ¿Es UUID típico o debería usar algún algoritmo de generación específico?
  2. ¿Por qué no puedo autorizar un socket específico como usuario y usarlo hasta que se cierre el socket?
  3. ¿Dónde almacenar este token en el lado del servidor?
  4. ¿Cómo se volverá a conectar el cliente al servidor?
  5. ¿Cómo se conectará el cliente al servidor después de que se vuelva a abrir la aplicación?
  6. ¿Qué datos deben almacenarse en el lado del cliente para volver a autorizarlos sin la intervención del usuario (sin volver a ingresar el nombre de usuario y la contraseña)?
  7. ¿Qué más necesito saber sobre los tokens de autenticación?
  8. Y, finalmente, ¿cómo mejorar este esquema, excepto el uso de tokens?
pregunta don-prog 26.04.2018 - 01:11
fuente

0 respuestas

Lea otras preguntas en las etiquetas