首页 文章

CORS和OAuth 2授权代码流程

提问于
浏览
6

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

问题是这些重定向都是连续发生的,浏览器中的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无法加载http://app.com/autho . 该请求被重定向到“http://autho.com/auth?response_type=code&redirect_uri=http://app.com/autho&state=639bfbe7-fd20-4c04-8feb-c9f60f4d55a9&client_id=0xdeadbeef”,不允许跨域来源需要预检的请求 .

EDIT2:所以重定向工作正常,没有 Authorization 标头 . 猜猜现在数据正在进行中 .

1 回答

  • 4

    这里似乎不正确的是你正在尝试使用JavaScript的重定向协议流程 .

    通常,您的浏览器会被重定向到授权服务器,并且在成功进行身份验证后,浏览器会使用身份验证代码或访问令牌重定向回应用程序(具体取决于使用的流程) .

    在这种情况下,您不是在使用JavaScript与授权服务器通信,因此交叉原点注意事项不起作用 .

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

相关问题