我在网站上看到基于OAuth2的社交登录的一个非常奇怪的问题。一小部分社交登录用户被重定向TWICE到OAuth2流程中使用的重定向URI:
注意:这不是日志记录错误,我看到大量的OAuth重定向只能攻击我的服务器一次。
这也发生在包括Facebook和Google在内的各种OAuth提供商中。
当我能够在Chrome中重现此内容时,我看到第一个对redirect_uri的请求在浏览器中被取消,第二个请求成功完成。这为竞争条件创建了一个小窗口,其中第一个请求在成功登录后更改了服务器上的会话密钥(以避免会话固定漏洞),因此当第二个请求使用旧会话密钥命中服务器时,它将丢失状态会话中的信息和OAuth流失败。
我完全不知道在用户被重定向到第三方OAuth提供商之后会发生什么导致这种情况。您是否在生产环境中看到了类似的东西?