【发布时间】:2019-01-28 11:05:22
【问题描述】:
我很难实现身份验证流程。
以下流程正在运行: 从客户端,我正在重定向到服务端:
document.location.href = URI.UriSignIn
在服务端,我正在重定向到 Google 的授权服务器:
const baseURI = "https://accounts.google.com/o/oauth2/v2/auth?";
const redirect_uri =
`redirect_uri=http://${process.env.URIBASE}:8081/callBackGoogle`;
const prompt = "&prompt=consent";
const reponse_type = "&response_type=code";
const client_id =
"&client_id=" + process.env.CLIENT_ID;
const scope =
"&scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile";
res.writeHead(302, {
'Access-Control-Allow-Origin': '*',
Location:
baseURI +
redirect_uri +
prompt +
reponse_type +
client_id +
scope
});
它正在工作,但现在我正在尝试将“UUID”添加到从客户端到服务器端的重定向,以便客户端稍后可以像这样检索他的 JWT:
axios.get(URI.UriSignIn, {
headers: {
'token-client': uuid()
}
})
使用相同的代码服务端,我收到以下错误
我找到了一种解决方法,将重定向拆分为 2 个请求,一个用于发送 UUID,另一个用于重定向,但这不是最安全的做法(出于安全原因)
【问题讨论】:
-
axios.get 不是重定向,而是 ajax 调用。看看使用
state参数,也许对你有帮助。 -
是的,我知道,但这正是我想将 UUID 发送到服务器的原因,以便它可以使用“state”参数中的 UUID 发送到 Google 的授权服务器。稍后在创建 JWT 后,客户端可以通过发送此特定 UUID 来检索
-
另外我想将数据发送到服务器(也许我应该使用 POST?)并从服务器端重定向到 Google 的授权服务器
-
我已经发布了您问题的答案。如果您还有其他问题,我建议您,例如“我该如何......?”你应该把它作为一个新问题发布。这有助于保持整洁,对未来的开发人员有用。
标签: cors google-oauth axios