为什么Google本地oauth2流程需要客户端密钥?

问题描述:

根据facebook oauth2文档,客户端流程不需要客户端秘密参数。客户端流程可用于本地和移动Web应用程序。为什么Google本地oauth2流程需要客户端密钥?

但谷歌的原生oauth2流程需要客户端秘密http://code.google.com/apis/accounts/docs/OAuth2.html#IA

在这种情况下,客户端机密可以被黑客利用逆向工程工具盗取。

有人可以澄清为什么这样做吗?

根据Google员工的帖子,主要原因是他们使用相同的库用于服务器端应用程序和本机应用程序。这听起来像他们不认为client_secret在本地应用程序的上下文中很敏感,但他们计划最终逐步淘汰已安装的应用程序流。

https://groups.google.com/group/oauth2-dev/browse_thread/thread/1e714924ebcc7e60/edfaaad5830ff2e8

我们不希望这些秘密留秘密到目前为止我们包括他们大多所以它的方便与今天的库使用,并希望停止要求他们在某个时刻在将来。

虽然这可能听起来很糟糕,但请记住,OAuth从未打算防止恶意用户在移动/桌面应用上下文中伪造请求。

如果你关心公开client_secret,还有这里描述的客户端流程:http://code.google.com/apis/accounts/docs/OAuth2.html#CS据我所知,客户端流程不需要client_secret,并且可以从桌面或移动应用。

-Chris