我真的不能发送带有客户端ID的开源软件吗?

Tho*_*mas 25 open-source oauth google-api clientid google-oauth

开发人员凭据(例如密码,密钥和客户端ID)旨在供您使用并标识您的API客户端.您将保密您的凭据并做出合理的努力来防止和阻止其他API客户端使用您的凭据.开发人员凭据可能未嵌入开源项目中.

(https://developers.google.com/terms/,我的重点)

这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在Google云端控制台中设置一个新项目?有更好的选择吗?

它不是很难从非开源中提取客户端ID和客户端"秘密",为什么区别呢?

"安装应用程序"客户端ID和机密并不是真正的秘密,Google文档似乎同意:

该过程会生成客户端ID,在某些情况下会导致客户端机密,您将其嵌入应用程序的源代码中.(在这种情况下,客户端秘密显然不被视为秘密.)

(https://developers.google.com/accounts/docs/OAuth2,我的重点)

DaI*_*mTo 25

2014年11月5日,Google对API服务条款进行了一些更改.

和你一样,我遇到了以下问题.

要求开发人员做出合理的努力,使他们的私钥保密,而不是将它们嵌入开源项目中.

我在GitHub上有几个开源项目,它们基本上是使用Google API的教程,一些API仍处于测试阶段,需要时间才能获得测试版访问权限.我我的客户ID在我的项目嵌入到我的用户将能够测试出应用程序.

现在我在谷歌有一些联系人,所以我希望我能在这里获得某种特权.我设法找到了上述违规服务变更Dan Ciruli的作者并给他发了一封电子邮件.

我的电子邮件是相当日志,你可以在这里阅读:服务的变化

长话短说不,你不能用你的开源项目发布你的客户端ID,Dan的电子邮件回复给我解释原因.

但是,你允许他们在谷歌的眼中"冒充"你.如果我们的滥用系统检测到滥用行为(例如,如果有人尝试使用您的密钥来执行我们的某项服务),您可能会因此而终止您的帐户(并且请注意 - 他们不会只是切断访问键,他们将关闭您的控制台帐户).此外,您已被授予对公众无法使用的API的白名单访问权(并且很可能需要同意单独的服务条款),并且可以与任何想要它的人共享访问权限.毫无疑问,这违反了这些条款.很抱歉没有您想要的答案,但是密钥是我们必须告诉谁呼叫我们服务的一种方式.

这只是他回复给我的电子邮件的一部分.您可以在上面的链接中阅读完整的帖子.因此,如果您向他们提供源代码,他们可以看到客户端ID.您的用户将不得不在Google Cloud控制台上创建自己的项目.没有办法解决这个问题.

我希望这有帮助.


Han*_* Z. 4

有一个更好的选择,称为 OAuth 2.0 动态客户端注册。但这仍然是一项正在进行的工作:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-dyn-reg-21,提供商可能需要一段时间才能采用和实施它。

编辑:

使用开源应用程序传送身份验证机密是绝对不可能的。[老实说,将它们与任何应用程序一起发布确实没有意义;对于开源应用程序来说,这一点更加明显。]

  • 从闭源 cq 中提取它们稍微困难一些。二进制文件,显然这就是谷歌的界限;混淆技术也可能有一点帮助(尽管政策没有提到这一点);除此之外,在动态客户端注册出现之前,本机移动应用程序没有什么好的替代方案(这就是为什么我认为提及它是有意义的......) (2认同)