Javascript OAuth2重定向URL应该是前端还是后端?

Javascript OAuth2重定向URL应该是前端还是后端?,javascript,cookies,oauth-2.0,csrf,create-react-app,Javascript,Cookies,Oauth 2.0,Csrf,Create React App,我正在使用授权授予流在我的应用程序中设置OAuth2。我也在使用createreact应用程序,因此我正在localhost:3000上开发,它将代理到localhost:8080上的我的应用服务器后端 除了我无法让CSRF令牌正常工作之外,其他一切都正常工作 我意识到这是因为我将OAuth2重定向URL设置到后端,因此它没有发送私有加密的csrf_statecookie,因为请求是从google而不是我的应用程序发出的 我认为这在生产中不会有问题,因为不会有代理服务器。相反,后端和前端将从同一

我正在使用授权授予流在我的应用程序中设置OAuth2。我也在使用createreact应用程序,因此我正在
localhost:3000
上开发,它将代理到
localhost:8080
上的我的应用服务器后端

除了我无法让
CSRF
令牌正常工作之外,其他一切都正常工作

我意识到这是因为我将OAuth2重定向URL设置到后端,因此它没有发送私有加密的
csrf_state
cookie,因为请求是从google而不是我的应用程序发出的

我认为这在生产中不会有问题,因为不会有代理服务器。相反,后端和前端将从同一
mydomain.com

那么,我是否应该不让这项工作处于发展阶段?或者我应该将OAuth2重定向URL设置到我的前端(
localhost:3000
),然后自动重定向到后端(
localhost:8080
),以便它可以发送私有加密的CSRF令牌


或者有没有一种方法可以让cookie源于谷歌,而不需要多次重定向?或者我不必为CSRF操心,因为
SameSite
现在在浏览器中拥有如此大的支持?

OAuth2.0授权代码授权包括使用
state
参数的CSRF保护。使用它,而不是依赖cookies

陈述

推荐的。客户端用于维护的不透明值 请求和回调之间的状态。授权 服务器在将用户代理重定向回时包含此值 给客户。该参数应用于防止 第10.12节所述的跨站点伪造请求

资料来源:


Ahmad是对的,下面是关于react应用程序和API标准用法的更多内容:

如果你正在使用React,那么你有一个SPA,在登录时应该直接重定向到谷歌

所以你的重定向url应该是localhost:3000

您的SPA应该完全没有Cookie,而且更简单,这是SPA的好处之一,您还可以在API中关闭CSRF检查

然后,SPA将向API发送访问令牌,API需要验证令牌,而不是cookie

我的教程和代码示例可能会帮助您了解运动部件:

是的,我正在使用状态变量。具体来说,我将
csrf\u state
值存储在一个私有cookie中,以便在身份验证完成时,路由处理程序可以检查这些值是否匹配。该状态应作为HTTP GET参数传递。是的,我知道,确实如此。但是,要与之进行比较的值必须保存在某个位置(数据库、私有cookie、redis等)。我正在使用私有cookie解决方案。