与每次发送用户名和密码相比,基于令牌的 API 安全模型有哪些安全优势?
基于令牌的方法的过程是:
- 使用用户名和密码发送“登录”请求
- 接收令牌
- 对所有后续请求使用令牌而不是用户名/密码
基于令牌的系统的好处(根据此http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/)是:
- 可扩展性
- 松耦合技术
- 移动友好
但是,我不确定为什么这些优势特定于基于令牌的方法,而不是每次都发送用户名/密码?以任何一种方式将后续的 Web 服务器添加到集群中不是很容易吗?在这两种情况下仍然进行密码验证,所以客户端也是松耦合的?
好处? 只是用户名/密码不需要每次都“检查”,我们可以根据会话密钥列表进行更简单的查找吗?虽然这是一种性能改进,但它确实增加了客户端应用程序的复杂性,如果令牌超时,客户端需要检查令牌是否仍然有效,这会进一步增加复杂性?
缺点? 每个请求都发送用户名/密码的缺点是否随着越来越多的数据传输,它变得更有可能被发现?如果是这样,HTTPS 是否不够强大以应对这种威胁?
编辑:我已经阅读了这个潜在的重复:为什么使用身份验证令牌而不是每个请求的用户名/密码? 但我有点不确定为什么第 2 点指出用户名/密码将存储为 cookie。为什么客户端机器会将用户名/密码保留为 cookie,而不将其包含在帖子内容本身中?