node.js - 为什么谷歌Oauth verifyIdToken(javascript nodejs版本)不使用客户端 secret ?

标签 node.js google-oauth google-signin google-api-nodejs-client

我正在测试 SPA js+nodejs 应用程序的 google singin。 我添加了这个:

<script src="https://apis.google.com/js/platform.js" async defer></script>

还有这些:

<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
<div class="g-signin2" data-onsuccess="onSignIn"></div>

在 html5/js 客户端。 遵循本指南:

https://developers.google.com/identity/sign-in/web/sign-in

当用户进行身份验证时,库会获取 token 并将其传递到服务器,如下所述:

https://developers.google.com/identity/sign-in/web/backend-auth

在服务器端(nodejs),使用此函数验证 token :

client.verifyIdToken(
    token,
    CLIENT_ID,
    // Or, if multiple clients access the backend:
    //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3],
    function(e, login) {
      var payload = login.getPayload();
      var userid = payload['sub'];
      // If request specified a G Suite domain:
      //var domain = payload['hd'];
    });

我的问题是:什么时候使用 client_secret?因为我使用 CLIENT_ID 前端从 google 获取身份验证 token ,所以我使用 CLIENT_ID 服务器端进行 token 验证。我认为可以使用仅在服务器端已知的 client_secret (即 SECRET)来验证 token ,这样获得 token 的其他人就无法验证该用户。 我错过了什么?

最佳答案

看来您创建的客户端是公共(public)客户端,客户端 key 在私有(private)客户端中使用。

编辑:很抱歉我使用了术语“私有(private)客户端”而不是“ secret 客户端”。 基本上我们在 Oauth2 中有 2 种类型的客户端

  1. 公共(public)客户端:- 这些客户端不需要客户端 key 。

  2. 私有(private)客户端:- 这些客户端拥有客户端 key 。

我无法给你一个非常确定的答案,为什么你看不到你的客户端 secret ,因为我之前没有使用过这些特定的库,但是 在我看来,您可能创建了一个公共(public)客户端而不是 secret 客户端。

关于node.js - 为什么谷歌Oauth verifyIdToken(javascript nodejs版本)不使用客户端 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304745/

相关文章:

node.js - 为什么子文件夹没有部署到 Google App Engine Nodejs 应用程序

javascript - Node 中无法识别 $or 运算符

javascript - 快速发送文件中断

python - 如何通过 Google App Engine Python 使用 OAuth 作为用户名和密码

node.js - 语法错误: Unexpected end of JSON input while parsing near '…: {"name":"@babel/plug' ?

authentication - 使用 Google 作为 OIDC 提供者,而不会在 kubernetes 中泄露客户端 secret

python-2.7 - app_identity_service.GetAccessToken() 需要比可用配额更多的配额

javascript - HTTP :403 forbidden error when trying to load img src with google profile pic

iOS Facebook 和 Google 同时登录?

android - Google OAuth 登录卡住加载同意屏幕