Bigquery在几个工具中使用“default”client_id,它指的是谁或它是什么?

时间:2014-01-22 08:55:10

标签: authentication google-oauth google-bigquery

我注意到在几个源代码中,使用了应用程序,默认的client_id和默认的client_secret。 当我连接到我的Bigquery项目时,它们会工作(在我的网络浏览器中提示时授权访问后),但我不允许任何API访问此client_id(好吧,我可能通过接受某些东西,但我不喜欢不知道是什么......)我在Cloud Console中的任何位置都找不到此client_id。

下面是使用此client_id(和client_secret)的源代码的一部分,可在此处找到:

https://code.google.com/p/google-bigquery-tools/source/browse/bq/bq.py?r=37103f240562cbe90bbd8df9bd313dcd87b7a106

_CLIENT_INFO = {
'client_id': '977385342095.apps.googleusercontent.com',
'client_secret': 'wbER7576mc_1YOII0dGk7jEE',
'scope': _CLIENT_SCOPE,
'user_agent': _CLIENT_USER_AGENT,
}

有人知道这个client_id引用了什么/谁? 是Google提供的预定义client_id吗? 这个client_secret是一个永远不会改变的固定值吗?

1 个答案:

答案 0 :(得分:2)

当您获得OAuth2令牌(对于某些类型的OAuth)时,您需要三件事:客户端ID,客户端密钥和范围。客户端ID的第一部分是Google Developer Console项目ID。当您将OAuth2令牌发送到后端服务时,如果后端服务已被作用域授权,则它将能够破解OAuth2令牌并提取项目ID。

在许多Google API中,这是您指定项目的方式 - 隐含在OAuth2令牌中。但是,在BigQuery中,我们希望人们能够使用多个项目而无需重新进行身份验证。项目ID始终是API请求的一部分(它在所有REST API请求使用的URL中指定)。 BigQuery根本不使用从OAuth2令牌派生的项目ID。

但仍需要客户端ID和客户端密码。这就是为什么bigquery将它们嵌入到客户端工具(bq.py和web ui)中的原因。它们并不是真正的秘密,因为它们只用于了解特定客户的受欢迎程度。另一种选择是bq的每个用户都必须生成他们自己的客户端密钥/客户端ID,这将使其更难以使用。

如果您正在编写与BigQuery进行通信的代码,我们希望您使用自己的客户端ID和客户端密钥。它们非常容易生成,并且可以在出现问题时帮助识别您的工具。

这是一个令人遗憾的混淆源,并且在将来,我们可能会采取措施来修复它,例如将请求中使用的项目ID默认为来自客户端ID的项目ID,但目前我们没有计划这样做。