我们正在编写一个与 OAuth2 API 集成的插件。
棘手的部分是,我们无法像大多数集成中那样对重定向 URI 进行硬编码,因为客户端可以在他们控制的任何域上安装此插件(例如 Wordpress 插件),并且访问令牌需要重定向回其自定义 url。
我们看到您可以设置state
OAuth2 中也有参数。所以我们可以将重定向 URI 硬编码为http://oursite.com/callback
并设置一个状态https://[CUSTOM_URL]
.
Then http://oursite.com/callback
将额外重定向到自定义 URL,并传递访问令牌。
然而,这似乎是一个安全漏洞,因为一旦用户对应用程序进行了身份验证,其他人可能会出现并导致它使用自己的 url 重新进行身份验证state
参数。然后它会很高兴地重定向到他们的错误网址并向他们传递访问令牌。
那么,人们如何在redirect_uri 可能变化的情况下设置OAuth2 集成呢?谢谢!
附:我们想到的一种解决方案是only允许state
如果重定向 uri 是我们控制的 url,则使用此参数。然后我们可以创建另一个验证页面,再次提示用户:“是否允许https://customurl.com https://customurl.com访问您的帐户...”。但我们认为可能有更好的方法。
对于动态客户端地址,可能值得考虑使用基于本地主机的重定向 URI。这听起来可能违反直觉,但由于 OAuth2 是基于浏览器/httpclientlib 的协议,因此它是有效的。来自服务器授权端点的重定向是由您自己的浏览器完成的,因此 localhost 作为redirect_uri 始终能够正确解析。因此,无论您在何处部署应用程序,您仍然可以修复redirect_uri。
该解决方案也有其含义,您应该考虑架构和安全后果。基于本地主机的redirect_uri非常适合隐式授予场景(即javascript客户端),但我认为对于授权代码授予场景(即远程Web应用程序),您应该使用远程可访问的主机名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)