Cha*_*lie 1 security impersonation oauth-2.0 openid-connect
我读了很多关于 OIDC 和 OAuth2 的内容,我知道 id token 主要用于客户端了解用户是谁以及用户当前是否仍然在线。
此外,Id令牌可以防止一类冒充攻击[您可以在本文中找到更多详细信息]。
但如果 id 令牌被盗怎么办?攻击者可以使用 id 令牌来冒充用户吗?
在我们的项目中,除了OIDC之外,我们只确保https。我还应该采取哪些安全考虑来减轻假冒攻击?
OIDC 的目标或目的并不是比 OAuth2 更安全,这种比较没有意义。他们解决不同的问题。
让我们从 OAuth2 开始。简而言之,OAuth2 解决了网站保存用户数据并且该用户希望向另一个网站授予对其部分数据的访问权限时出现的问题。假设您有一个 Facebook 帐户,但希望允许我的应用程序访问您在 Facebook 上的一些数据,或者举一个更具体的示例,您希望允许我的 Awesomeapp.com 应用程序发布指向您的 Facebook 墙的链接。为此,我的网站将您重定向到 Facebook,您登录,获取访问令牌,然后将该访问令牌发送回我的网站,以便我可以以您的名义使用它来获取您允许我执行的操作。
请注意,缺少一件事。我不知道你是谁。我只有一个访问令牌,我可以用它来做一些事情,但我没有关于你的身份信息。当然,这可以以不同的方式被滥用,访问令牌可以保存您的电子邮件地址或其他任何内容,但它是有限的,大小很重要,并且没有标准的方法。
至少在 OIDC 介入之前不会。OIDC 提供身份元素。
ID 令牌的目的是提供身份信息,告诉我有关您是谁的声明。它可能会声称您的电子邮件地址是什么、您所在的安全组、您为哪家公司工作或其他任何内容。它还可用于下载更多声明,以防它们不全部适合实际令牌(请参阅userinfo)。这些声明来自身份提供商,例如 Facebook,我的应用程序当然必须信任它,即我会相信 Facebook 告诉我的有关您的任何信息。
这一切都可以通过纯 OAuth2 实现,但没有标准的、众所周知的方法来做到这一点(或者,它是 OIDC:))。您可以自己发明和实现某些东西,但这些东西比乍看起来要复杂得多。这就是发明 OIDC 的原因,因此您不必这样做。但毕竟,OIDC 只是使用 OAuth2 提供身份的一种方式。最后,如果您愿意的话,它只是一个扩展的 OAuth2。
至于您需要考虑哪些安全考虑因素 - 这部分问题太宽泛,不幸的是无法回答。安全是一个非常复杂的话题。
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |