【发布时间】:2020-05-09 15:02:27
【问题描述】:
使用 IdentityServer4 的 OAuth 中的重定向如何详细工作?直接调用身份服务器重定向 URL(在可能无法环回的情况下)或者浏览器是否从身份服务器以重定向作为参数获得响应并且浏览器进行重定向?
是否存在可以更改身份服务器的响应以重定向到其他站点的已知问题?这样就可以盗取验证码了。
【问题讨论】:
标签: oauth-2.0 identityserver4 openid-connect
使用 IdentityServer4 的 OAuth 中的重定向如何详细工作?直接调用身份服务器重定向 URL(在可能无法环回的情况下)或者浏览器是否从身份服务器以重定向作为参数获得响应并且浏览器进行重定向?
是否存在可以更改身份服务器的响应以重定向到其他站点的已知问题?这样就可以盗取验证码了。
【问题讨论】:
标签: oauth-2.0 identityserver4 openid-connect
IdentityServer4 在浏览器中重定向。 是的,有一个已知问题是身份服务器的响应可以更改为重定向到其他站点。还有一些方法可以减轻这些风险。您可以使用 PKCE 和 nonce。
https://auth0.com/docs/flows/concepts/auth-code-pkce https://developer.okta.com/blog/2019/08/22/okta-authjs-pkce
【讨论】:
而不是重定向到另一个恶意端点(这将暴露授权代码),更有可能拥有Cross-site request forgery (CSRF) attack。为此 OAuth 2.0 规范为您提供 state 参数 (more on this)。
关于重定向到恶意端点的可能性,为此,
第二点很难利用(但可能)。因为根据 OAuth 2.0 定义,您在 register your client 时注册重定向 URL
授权服务器将用户代理重定向到 客户端的重定向端点之前建立的 在客户端注册过程中或当授权服务器 发出授权请求。
所以这意味着您的身份服务器已被破坏或您的注册被利用。而且您将不得不担心用户被重定向到恶意网站,这可能会提取其他重要细节而不是暴露授权代码。
Authorization Code Redirection URI Manipulation 下的规范中强调了这一点
攻击者可以在合法客户端创建帐户并发起 授权流程。当攻击者的用户代理被发送到 授权服务器授予访问权限,攻击者获取 由合法客户端提供的授权 URI 并替换 客户端的重定向 URI 与受控制的 URI 攻击者。然后攻击者诱使受害者跟随 操纵链接以授权访问合法客户端。
【讨论】: