首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google上注册--我该怎么处理‘Sign’?

在Google上注册--我该怎么处理‘Sign’?
EN

Stack Overflow用户
提问于 2021-09-23 00:55:43
回答 2查看 883关注 0票数 1

我现在做的是:

  1. 使用JavaScript API在我的网页上呈现按钮。
  2. 当使用Google的登录完成后,我的客户端JavaScript回调将被调用。
  3. 该回调将给定的.credentials字符串发送到我的服务器。
  4. 后端服务器(Node.js)在google-auth图书馆字符串上调用google-auth图书馆库的OAuth2Client.verifyIdtoken方法,该方法返回用户的电子邮件地址(除其他外),我的服务器使用该地址来验证用户并创建会话。

一切正常,但我想知道是否有任何安全问题,我错过了。特别是有一个nonce字段。docs (链接)并不解释如何使用它。

注意:我使用的是“与谷歌签约”,而不是不推荐的"Google登录“

编辑:我熟悉非the的概念,并在自己执行OAuth 2服务器端流时使用了它们。我不明白的是,Google登录时期望我在上面的流中使用它的nonce参数,在这里,我同时使用他们的客户端和服务器端SDK。

EN

回答 2

Stack Overflow用户

发布于 2021-09-23 00:58:30

非CSRF是一种预防CSRF的方法.当您向Google提出请求时,您将包含一个nonce,并且当身份验证完成时,Google将返回相同的nonce。这种方法的神奇之处在于,如果现在与您发送的内容不匹配,那么您可以忽略响应,因为它可能是被欺骗的。

了解更多关于CSRF的信息,这里是:https://owasp.org/www-community/attacks/csrf

非are通常是低温安全的随机字符串/字节。

我使用crypto-random-string作为基础来生成非use,但是任何具有此功能的包都应该足够了。

有时,我用Redis中的TTL存储非can,但有时我使用附加于请求的ID来存储非can,以便以后验证它。

我告诉你这件事,因为我花了很长时间才弄明白这件事:

票数 2
EN

Stack Overflow用户

发布于 2022-04-25 13:04:30

使用来自谷歌网站(https://developers.google.com/identity/one-tap/android/idtoken-auth)的示例,我添加了当前的代码:

代码语言:javascript
复制
const nonce = '...'; // Supplied by client in addition to token
const {OAuth2Client} = require('google-auth-library');
const client = new OAuth2Client(CLIENT_ID);
async function verify() {
  const ticket = await client.verifyIdToken({
      idToken: token,
      audience: CLIENT_ID,  // Specify the CLIENT_ID of the app that accesses the backend
      // Or, if multiple clients access the backend:
      //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
  });
  const payload = ticket.getPayload();
  const serverNonce = payload['nonce'];
  if (nonce != serverNonce) {
    // Return an error
  }

  const userid = payload['sub'];
  // If request specified a G Suite domain:
  // const domain = payload['hd'];
}
verify().catch(console.error);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69292771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档