Oauth 为什么谷歌为本机应用程序提供客户端机密?

Oauth 为什么谷歌为本机应用程序提供客户端机密?,oauth,oauth-2.0,google-oauth,Oauth,Oauth 2.0,Google Oauth,我正在编写一个针对GoogleAPI的本机应用程序。在注册我的应用程序时,尽管它被明确指定为本地应用程序,但Google开发者控制台为我提供了一个客户端机密 就我对OAuth 2.0协议的理解而言,本机应用程序永远不应该有客户机机密,因为它们不能保证其机密性。谷歌在OAuth2.0的实现中是否犯了错误?如何继续?您是对的,从保密的角度来看,客户端机密在本机应用程序中并不是非常有用。我怀疑它主要是为了与web应用程序流保持一致 但是它至少有一个有用的特性。。。原始开发人员可以随时重置它,有效地撤销

我正在编写一个针对GoogleAPI的本机应用程序。在注册我的应用程序时,尽管它被明确指定为本地应用程序,但Google开发者控制台为我提供了一个客户端机密


就我对OAuth 2.0协议的理解而言,本机应用程序永远不应该有客户机机密,因为它们不能保证其机密性。谷歌在OAuth2.0的实现中是否犯了错误?如何继续?

您是对的,从保密的角度来看,客户端机密在本机应用程序中并不是非常有用。我怀疑它主要是为了与web应用程序流保持一致


但是它至少有一个有用的特性。。。原始开发人员可以随时重置它,有效地撤销绑定到该客户端ID的所有刷新令牌。

这是我第一次使用OAuth,因此我不确定在应用程序中嵌入客户端机密会带来什么安全影响。一旦我这么做了,我就会向全世界展示它,它可以被反向工程。我该怎么担心呢?一个知道客户端秘密的攻击向量有多少给潜在的攻击者?在本地应用程序中获取访问令牌(这是你最终用来访问API的)。你需要为谷歌提供刷新令牌(这是谷歌在原始OAuth-舞结束时提供的),而你的应用程序通常为用户存储。还有你的客户的秘密。将其烘焙到您的应用程序中(知道它可以进行反向工程)很好—它本身不提供对任何数据的访问—它总是与刷新令牌一起使用。