当前位置: 首页 > 知识库问答 >
问题:

单凭状态参数就能为具有机密客户端的OIDC提供足够的保护吗?

方飞鸣
2023-03-14

在仔细研究OIDC规范和许多实现指南和文章时,我仍然无法确定state参数是否能够为我的特定OIDC用例提供足够的保护,尽管它似乎应该是这样。鉴于我正在使用:

    null

用户登录后,攻击者获得对其授权代码的访问权(例如,通过检查共享机器上的浏览器历史记录),然后使用该代码与客户端的重定向endpoint一起触发令牌交换,将攻击者登录到用户的帐户中。这种情况是可以避免的:用户以前已经将代码交换为令牌,而auth服务器将不允许重用它。

攻击者能够读取用户代理与客户端或auth服务器之间的明文通信量(例如恶意软件、破坏TLS的公司网络)。这种情况无法缓解,因为攻击者可能掌握在自己的计算机上重新创建用户会话所需的所有信息。

我对以上所有的理解都是正确的吗?

共有1个答案

胡景焕
2023-03-14

单独使用状态参数的一个问题是,它是客户端验证,应该由每个客户端来验证这个参数。但是,并不是每个客户机都执行此验证,这是一个问题。

通过添加PKCE,我们得到了一个服务器端验证,这意味着糟糕实现的客户端将无法进行身份验证,标识提供者可以强制/要求使用PKCE。

 类似资料:
  • 我有一个API,我想与OAuth2安全。我已经用密码做了一个虚拟测试grant_type一切正常。我可以请求令牌,用它访问安全的endpoint,等等。服务器充当授权和资源服务器。 后来我读到,我应该使用隐式的grant_类型,因为客户端将是一个javascript应用程序。 我的客户端是这样配置的: 如果我尝试像这样访问endpoint:http://localhost:8080/oauth/a

  • 快速入门展示了使用 IdentityServer 保护 API 的最基础的场景。 在这个场景中,我们定义一个 API,同时定义一个 想要访问这个 API 的 客户端。客户端将从 IdentityServer 请求获得一个访问令牌,然后用这个令牌来获得 API 的访问权限。 定义 API 范围(Scopes)用来定义系统中你想要保护的资源,比如 API。 由于当前演练中我们使用的是内存配置 —— 添

  • 问题内容: 我想用 具有要求构造函数参数的Exception类型。像这样: 有没有一种方法可以创建一个将我的参数值传入的供应商? 问题答案: 当然。

  • 我如何保护我的javascript客户端,你能推荐一些库吗。 提前谢谢你

  • 有可能保护无状态REST API免受XSS和CSRF攻击吗? 目前,我使用存储在secure/httpOnly cookie中的JWT令牌进行无状态身份验证。这应该可以保护API免受最常见的XSS攻击:使用XSS注入的JavaScript窃取Cookie并将其发送给攻击者。 然而,这并不能保护API免受CSRF攻击,在这种攻击中,攻击者会欺骗经过身份验证的用户跟踪特定web API调用的链接,从而