Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌硬盘SDK-客户端机密-它有多机密?_Java_Maven_Oauth_Google Drive Api_Google Oauth - Fatal编程技术网

Java 谷歌硬盘SDK-客户端机密-它有多机密?

Java 谷歌硬盘SDK-客户端机密-它有多机密?,java,maven,oauth,google-drive-api,google-oauth,Java,Maven,Oauth,Google Drive Api,Google Oauth,根据需要,您需要向您的Google帐户注册自定义应用程序,以获取客户id和客户机密信息。然后,您可以使用这些为您的用户构建链接以获取访问/刷新令牌 根据我读过的oAuth上的一些介绍性指南,客户机密信息在某些情况下应该保密,而在某些情况下则不应该保密。我正在用Java构建一个Maven插件,在这种情况下,您似乎很难对其值保密 是否可以将我的代码作为开放源代码发布,包括客户机密信息?或者这对我来说意味着潜在的风险?如果不行,那么我如何允许其他人使用插件而不泄露客户端的秘密值呢?请参阅谷歌关于以下内

根据需要,您需要向您的Google帐户注册自定义应用程序,以获取
客户id
客户机密
信息。然后,您可以使用这些为您的用户构建链接以获取访问/刷新令牌

根据我读过的oAuth上的一些介绍性指南,客户机密信息在某些情况下应该保密,而在某些情况下则不应该保密。我正在用Java构建一个Maven插件,在这种情况下,您似乎很难对其值保密


是否可以将我的代码作为开放源代码发布,包括客户机密信息?或者这对我来说意味着潜在的风险?如果不行,那么我如何允许其他人使用插件而不泄露客户端的秘密值呢?

请参阅谷歌关于以下内容的文档:

Google OAuth 2.0端点支持安装在设备上的应用程序(如移动、Mac、PC)。这些应用程序被分发到单独的机器上,并且假设这些应用程序不能保密


你泄露秘密应该没问题。唯一的风险是一些流氓用户“烧掉”了你所有的配额。如果出现此问题,可能有助于缓解此问题。

在不使用令牌的情况下发布代码,并解释使用您的代码的用户如何获得自己的令牌。 否则,人们可能会滥用您的或将其复制到其他项目中。
否则,您可以刻录您的配额,并且如果配额被复制到其他应用中,这些配额将显示为您的配额。然后,用户将弹出权限对话框(带有您的应用名称和徽标)

这取决于您发布的内容。如果你正在制作一个库,其他人将使用它来构建应用程序,那么不,他们应该为自己的应用程序注册并使用自己的客户端机密

如果你有一个正在发布的应用程序,并且因为你是一个好公民而想发布源代码,我也会在发布的源代码中保留客户机密;想要自己版本的应用程序的人应该注册自己的客户端


当然,任何编译到移动应用程序中的东西都不再是什么秘密了,因为移动设备不能保守秘密。

对于问题的“如何发布代码”部分,这似乎是一个很好的建议,但是如何分发JAR文件(上传到Maven存储库),以便人们可以使用插件呢?据我所知,他们可以打开JAR文件,对类进行反向工程并读取秘密令牌。如何防止他们这样做?您是否建议我要求普通用户(他们中的每一个人)在Google Drive注册他们自己的应用程序,并将客户端id和客户端机密值作为参数提供给插件?这似乎是一种安全但麻烦的方法。我以为你在服务器上保守秘密。对于已安装的应用程序,oauth流是不同的,不使用机密。如果您必须使用它们,我怀疑任何人都会经历提取它们的麻烦,因为它可以免费创建您自己的(除非它是一个付费的控制台项目,因此您可以获得更多配额)。我指的是人们在没有意识到的情况下复制/粘贴你发布的代码,并将其用于自己的应用程序。这是第二种情况。您是否建议我在发布的源代码中省略这个秘密,但将其包含在分布式JAR文件中?我担心人们会对JAR文件中的秘密进行反向工程。不过,要求每个用户在谷歌注册自己的应用程序似乎也不太合适。正如你所说,试图将其隐藏在JAR中没有任何意义,如果你要发布它,你最好在源代码中发布它。我认为,如果其他人构建他们自己的应用程序,他们应该注册他们自己的应用程序作为一个一般原则,这就是OAuth应该如何工作的。