Oauth 2.0 用户名/密码和承载令牌之间有什么区别?

Oauth 2.0 用户名/密码和承载令牌之间有什么区别?,oauth-2.0,token,access-control,bearer-token,Oauth 2.0,Token,Access Control,Bearer Token,根据RFC-6750,一种安全令牌,其属性是拥有该令牌的任何一方(“持有人”)可以使用该令牌,而拥有该令牌的任何其他方可以(无需证明拥有加密密钥) Q1)这一定义是否也适用于用户名和密码,因为拥有用户名和密码的任何人都可以像拥有用户名和密码的任何其他方一样使用用户名和密码(可能被盗)?在这两种情况下(无需证明拥有 加密密钥)。是否因为令牌已包含权限? 非常感谢 正如您所说,这两种令牌都可以被窃取它们的人使用,但访问令牌的关键点在于: 与密码不同,它们的寿命很短(~60分钟) 它们仅代表特定应

根据RFC-6750,一种安全令牌,其属性是拥有该令牌的任何一方(“持有人”)可以使用该令牌,而拥有该令牌的任何其他方可以(无需证明拥有加密密钥)

  • Q1)这一定义是否也适用于用户名和密码,因为拥有用户名和密码的任何人都可以像拥有用户名和密码的任何其他方一样使用用户名和密码(可能被盗)?在这两种情况下(无需证明拥有 加密密钥)。是否因为令牌已包含权限? 非常感谢

正如您所说,这两种令牌都可以被窃取它们的人使用,但访问令牌的关键点在于:

  • 与密码不同,它们的寿命很短(~60分钟)
  • 它们仅代表特定应用程序所需的用户权限的子集
窃取访问令牌

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

密码管理

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

基于上述原因,OAuth技术将密码排除在应用程序之外。您的应用程序不应看到用户的密码,并且不对任何密码漏洞负责


相反,密码由专业身份提供商软件维护。大多数公司都采用低成本的云解决方案,密码管理由安全专家开发。

谢谢。让我困惑的是这样一句话:“拥有代币的任何一方(“持有人”)都可以以任何其他拥有代币的一方可以使用的方式使用代币(无需证明拥有加密密钥)。”我的观点是,它也适用于密码。现在您指的是访问令牌。我说每个访问令牌都是承载令牌对吗?承载令牌是目前最常见的选择,因为它们适用于web和移动UI。在后端场景中,更高的安全性选项是可能的,例如或,客户端除了令牌本身之外还发送私钥的证明。但是,这些对于web和移动UI来说通常是不可行的,因为它们是公共客户端,不能保守秘密。