如何使包含数据的redirect_url进行oauth Google

时间:2019-01-28 11:05:23

标签: cors google-oauth axios

实施认证流程有些困难。

以下流程正在工作: 从客户端,我正在重定向到serv端:

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()
    }
})

具有相同的代码serv端,并且出现以下错误 error detail

我找到了一种解决方法,将重定向分为2个请求,一个发送UUID,另一个发送重定向,但这不是最安全的操作(出于安全原因)

1 个答案:

答案 0 :(得分:0)

该问题的答案是OP正在使用对URL的ajax / rest调用,该URL应该是重定向的目标。

所以,从广义上讲,不是

  

axios.get(URL)

用户应该这样做

  

location.href = url