gpt4 book ai didi

javascript - CORS 和 OAuth 2 授权代码流

转载 作者:数据小太阳 更新时间:2023-10-29 04:45:52 26 4
gpt4 key购买 nike

我有一个受 OAuth 2 授权代码流保护的后端应用程序。前端(浏览器中的 javascript)点击后端的授权端点,后端将浏览器重定向到授权代码服务器,用户进行身份验证,然后授权服务器使用授权代码将浏览器重定向回后端后端兑换 token 以访问某些服务。

问题是这些重定向都是连续发生的,浏览器中的 CORS 阻止了交换。就 CORS 而言,服务器需要做什么才能使此流程正常运行?

browser                                 -> POST app.com/auth
307 auth.com/auth?redirect=app.com/auth <-
browser -> POST auth.com/auth?redirect=app.com/auth (with authorization header)
307 app.com/auth?authcode=fubar <-
browser -> POST app.com/auth?authcode=fubar

大致就是它应该如何进行。

编辑:浏览器说

XMLHttpRequest cannot load http://app.com/autho. The request was redirected to 'http://autho.com/auth?response_type=code&redirect_uri=http://app.com/autho&state=639bfbe7-fd20-4c04-8feb-c9f60f4d55a9&client_id=0xdeadbeef', which is disallowed for cross-origin requests that require preflight.

EDIT2:所以重定向在没有 Authorization header 的情况下工作正常。猜测数据目前正在体内。

最佳答案

这里对我来说似乎不正确的是,您正在尝试使用来自 JavaScript 的重定向协议(protocol)流。

通常情况下,您的浏览器会被重定向到授权服务器,并且在身份验证成功后,浏览器会被重定向回带有授权代码或访问 token (取决于使用的流程)的应用程序。

在这种情况下,您不是通过 JavaScript 与授权服务器通信,因此跨源注意事项不会发挥作用。

如果您想从 JavaScript 客户端使用 OAuth2,我建议您查看 implicit grant ,这是为不受信任的客户端(如 JavaScript 应用程序)设计的重定向流程。

关于javascript - CORS 和 OAuth 2 授权代码流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com