Oauth 2.0:暴露了客户端ID和客户端密钥,这是一个安全问题吗?

Android oauth 2.0客户端应用程序具有其凭据(客户端ID和客户端密钥)时,硬编码很容易反编译应用程序并检索凭据。
暴露客户端ID和秘密有什么后果?

Solutions Collecting From Web of "Oauth 2.0:暴露了客户端ID和客户端密钥,这是一个安全问题吗?"

我知道这不是一个好的StackOverflow答案,但我觉得不能比威胁模型和安全注意事项(RFC 6819)更好地解释它。 所以这里是关于获取客户秘密及其相关后果的段落。

请注意,Android应用程序是公共客户端(更具体的本机应用程序),因此,正如您所说,无法保密其凭据,但仍能够保护令牌和授权码。

您的案例也很有趣,这是一个关于智能手机的例子。

我知道RFC并不是最有趣的读物,但这些都非常清楚。

据此,这是一个安全问题: http : //software-security.sans.org/blog/2011/03/07/oauth-authorization-attacks-secure-implementation

如果链接停止工作,它的内容如下:

OAuth对基于浏览器的授权的依赖性会为移动或桌面应用程序创建一个inheritance实现问题,默认情况下不会在用户的浏览器中运行。 此外,从纯安全角度来看,主要关注的是实现者在客户端应用程序本身中存储和混淆密钥/秘密组合。 这使得密钥轮换几乎不可能,并且允许未经授权地访问存储消费者秘密的反编译源代码或二进制文件。 例如,要在Android上破坏Twitter客户端的客户端凭据,攻击者可以使用Android解析器工具dexdump简单地反汇编classes.dex:

dexdump - d classes.dex 

以上内容涉及更多细节,是一个非常好的阅读。

只是一句话:客户端ID不是设计秘密,所以实际上没有必要保护它。

请参阅RFC 6749中的2.2节 (“OAuth 2.0授权框架”):

客户端标识符不是秘密; 它暴露给资源所有者,不得单独用于客户端身份validation。