0

我有一个使用隐式流程来授权用户的 React 应用程序。

流程如下: 1. 如果 sessionStorage 中没有保存访问令牌或用户信息 - 用户将被重定向到登录页面。2. 用户登录并被重定向到 React App 的主页。2.1。当重定向回主页时,重定向 URL 已经有 access_token 和 id_token 作为 url 参数的一部分。3. React App 保存访问令牌并解码 id_token 以获取有关用户的信息。

现在的问题是,如果有人在 2.1 中窃取了重定向 URL。他们可以将其粘贴到浏览器中并基本上重播此登录。

解决方案之一是实施 nonce。

https://auth0.com/docs/api-auth/tutorials/nonce

根据上面的文章,nonce 应该存储在 localStorage 中,一旦我得到带有 nonce 的 id_token - 我应该使用来自 localStorage 的原始 nonce 验证它。但是攻击者可以做以下事情: 1. 拿走这个 id_token。2. 使用任何在线工具对其进行解码。3. 检查里面有什么样的随机数。4. 使用 Chrome 开发工具修改 hist localStorage 所需的 nonce。

有人知道防止此类攻击的更好想法吗?

4

1 回答 1

0

这个问题是真实的。这个特定问题可以通过在运行时在身份服务器和应用程序级别之间进行严格的重定向 URI 验证来解决,但还有更多问题。来自 auth0 的这篇博文对此进行了解释。 https://auth0.com/blog/oauth2-implicit-grant-and-spa/#The-Implicit-Grant

oauth2.0 工作组发布了当前最佳实践,建议将隐式授权流程替换为授权码流程+ PKCE。 https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-11

于 2019-06-06T22:34:35.890 回答