¿Cuáles son los beneficios de seguridad sobre un modelo de seguridad API basado en token en lugar de enviar el nombre de usuario & contraseña cada vez?
El proceso del enfoque basado en token es:
- Enviar una solicitud de 'inicio de sesión' con nombre de usuario y contraseña
- Recibir un token
- Use el token en lugar del nombre de usuario / contraseña para todas las solicitudes posteriores
Los beneficios de un sistema basado en token (según este enlace ) son:
- Escalabilidad
- Tecnología débilmente acoplada
- compatible con dispositivos móviles
Sin embargo, no estoy seguro de por qué estas ventajas son específicas de un enfoque basado en token en lugar de enviar el nombre de usuario / contraseña cada vez. ¿No es tan fácil agregar servidores web posteriores a un clúster de cualquier manera? La verificación de la contraseña todavía se realiza en ambos casos, ¿por lo que el lado del cliente está acoplado de forma tan simple?
¿Ventajas? ¿Es simplemente que el nombre de usuario y la contraseña no necesitan ser 'verificados' cada vez que podemos hacer una búsqueda más simple basada en una lista de claves de sesión? Si bien esta es una mejora del rendimiento, agrega una mayor complejidad en la aplicación cliente, y otras complejidades si hay un tiempo de espera en el token en el que el cliente tendría que verificar si el token sigue siendo válido.
¿Desventajas? ¿Las desventajas con un nombre de usuario / contraseña se envían con cada solicitud que, con más y más transmisiones de estos datos, es más probable que puedan descubrirse? Si es así, ¿no es HTTPS lo suficientemente robusto para contrarrestar esta amenaza?
EDITAR: He leído este duplicado potencial: ¿Por qué usar un token de autenticación en lugar del nombre de usuario / contraseña por solicitud? pero no estoy muy seguro de por qué el punto # 2 dice que el nombre de usuario / contraseña se almacenará como una cookie. ¿Por qué la máquina cliente mantendría el nombre de usuario / contraseña como una cookie y no la incluiría en el contenido de la publicación?