gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:11:14 25 4
gpt4 key购买 nike

我正在测试 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com