如何保护 Oauth 2.0 客户端 ID 和客户端密码

Posted

技术标签:

【中文标题】如何保护 Oauth 2.0 客户端 ID 和客户端密码【英文标题】:How to Secure Oauth 2.0 Client ID and Client Secret 【发布时间】:2017-10-18 01:51:41 【问题描述】:

android oauth 2.0 客户端应用程序具有客户端 ID 和客户端 Secret 硬编码时。反编译应用程序并检索凭据非常容易。 那么将这些凭据提供给 oauth 服务器有什么用。

【问题讨论】:

【参考方案1】:

不建议将client_idclient_secret 硬编码到本机应用程序中,即在移动应用程序场景中使用所谓的“机密客户端”,因为client_secret 不能保密。

本机应用程序通常是授权服务器的“公共客户端”,即没有client_secret 的应用程序。安全性来自于这样一个事实,即注册了一个唯一的重定向 URI,并应用了其他 OAuth 功能,如 PKCE (https://www.rfc-editor.org/rfc/rfc7636)。

有关将 OAuth 2.0 用于本机应用的一般建议,请参阅:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-native-apps,尤其是安全注意事项:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-native-apps-10#section-8

【讨论】:

以上是关于如何保护 Oauth 2.0 客户端 ID 和客户端密码的主要内容,如果未能解决你的问题,请参考以下文章

Django/tastypie 实现中的 OAuth 2.0 客户端 ID

为游戏恢复 OAuth 2.0 客户端 ID

OAuth 2.0客户端凭据获取用户ID

为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?

为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?

Java中是否有OAuth 2.0 Provider实现? (不是oauth客户)[关闭]