用户名/密码和不记名令牌之间的区别是啥?

Posted

技术标签:

【中文标题】用户名/密码和不记名令牌之间的区别是啥?【英文标题】:What is the Diff between username/passwords and Bearer tokens?用户名/密码和不记名令牌之间的区别是什么? 【发布时间】:2020-12-25 01:41:52 【问题描述】:

根据 RFC-6750 一种安全令牌,具有任何拥有该令牌的一方(“持有者”)可以以任何其他拥有它的方可以(无需证明拥有一个加密密钥)

Q1) 这个定义是否也适用于用户名和密码,因为拥有用户名和密码的任何人都可以像任何其他方一样以相同的方式使用它(可能是窃取了用户名和密码)用户名和密码)拥有它可以?在这两种情况下(没有证明拥有 密钥)。是因为令牌已经包含权限吗? 非常感谢

【问题讨论】:

【参考方案1】:

正如你所说,窃取它们的人都可以使用它们,但关于访问令牌的关键点是:

与密码不同,它们的寿命很短(约 60 分钟) 它们仅代表特定应用所需的用户权限的子集

窃取访问令牌

访问令牌也不容易被盗。攻击者可能能够为自己的登录获取访问令牌,但如果您的 UI 和 API 编码安全,那么这将不允许他们以任何方式提升他们的权限。

密码管理

密码被盗比令牌被盗严重得多,因为密码代表用户可以做的任何事情,可能跨越许多应用程序。

出于上述原因,OAuth 技术使密码无法进入应用程序。您的应用永远不会看到用户的密码,并且不对任何密码漏洞负责。

相反,密码由专业身份提供程序软件维护。最常见的公司插入低成本的云解决方案,其中密码管理由安全专家开发。

【讨论】:

谢谢。让我感到困惑的是这样的声明“拥有令牌的任何一方(“持有者”)可以以任何其他拥有它的一方可以使用的任何方式使用该令牌(无需证明拥有加密密钥)。 "我的观点是它也适用于密码。现在您指的是访问令牌。我可以说每个访问令牌都是不记名令牌吗? 不记名令牌是迄今为止最常见的选项,因为它们适用于 Web 和移动 UI。在后端场景中可以使用更高的安全选项,例如Mutual TLS to get a token 或Proof of Possession Tokens,其中客户端除了令牌本身之外还发送私钥证明。但是,这些通常不适用于 Web 和移动 UI,因为它们是公共客户端,不能保密。

以上是关于用户名/密码和不记名令牌之间的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

为社交登录用户生成不记名令牌 Spring Boot

Elasticsearch:无需基本身份验证即可创建用于访问的不记名令牌

使用多部分和不记名令牌上传图像

Alamofire 5.0+ MultipartFormData 上传不记名令牌

使用Alamofire时,元组类型的值没有成员验证是啥意思?

使用 Alamofire 和不记名令牌序列化对象