gpt4 book ai didi

javascript - 为什么 Javascript 的 OAuth 不需要客户端密码?

转载 作者:行者123 更新时间:2023-12-01 16:36:31 25 4
gpt4 key购买 nike

好消息是我关注了official tutorial关于通过 Javascript 访问 Google Drive REST API 并且它有效。但是,代码中使用了 client_id 而不是 client_secret

/**
* Check if current user has authorized this application.
*/
function checkAuth() {
gapi.auth.authorize(
{
'client_id': CLIENT_ID,
'scope': SCOPES.join(' '),
'immediate': true
}, handleAuthResult);
}

在注册应用程序时,我得到了一个从未使用过的client_secretclient_secret 不应该在 auth_token 请求中发送出去吗 herehere

正如下面评论中提到的,我完全理解 client_id 是公开的,而不是 client_secret。令我惊讶的是,Google 的 OAuth 2.0 是如何在不使用 client_secret 获取 auth_token 的情况下工作的。这不是 OAuth 2.0 规范强制要求的吗?是什么阻止了恶意应用冒充合法应用?

我可以将 localhost:8000 设置为我的 Javascript 来源。

enter image description here

最佳答案

客户端 ID 和客户端密码都用于识别您的应用程序。 Client id 是公开信息,可以向用户显示。虽然 secret 必须保密,否则任何人都可以有效地使用您的应用程序凭据。

JavaScript 是客户端,因此如果您在页面上查看源代码,您可以看到客户端 ID。如果您的代码也包含 secret ,那么他们也会看到并能够使用它。

我怀疑这就是我们需要使用 JavaScript 的原因,或者它添加了额外的安全层,而不是在 JavaScript 应用程序中使用 secret 。

RFC6749

The authorization server issues the registered client a clientidentifier -- a unique string representing the registrationinformation provided by the client. The client identifier is not asecret; it is exposed to the resource owner and MUST NOT be usedalone for client authentication. The client identifier is unique tothe authorization server.

英语:Google 开发人员控制台注册应用程序(客户端),创建一个唯一的字符串来标识该客户端(项目)。客户端 ID 不是 secret ,应该向数据所有者显示。

4.1. Authorization Code Grant据我所知,客户端密码不是授权代码交换的必需部分。

关于javascript - 为什么 Javascript 的 OAuth 不需要客户端密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41714648/

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