原生应用OAuth2授权

Native app OAuth2 authorization

我们想使用 OAuth2 创建一个本地移动应用程序。 如何防止窃取clientID(此信息任何人都可以获得)?有人可以创建自己的应用程序并使用我们的 clientID 充当我们的应用程序吗?

是的,如果有人检索到您的 clientId/clientSecret,他可以充当您的应用程序,遗憾的是,无法从您的应用程序中完全删除凭据。

在更高级别,您的应用程序需要一个标识符和一个秘密来验证您的服务。如果您从您的应用程序中删除秘密,您需要从其他地方获取它(可能是您的用户输入它,这与为用户提供身份验证并给他一个令牌以进一步执行相同 API 来电)。

但是,如 this article 中所述,您可以让逆向者更难获得凭据。 更难的是,您可以强制在 HTTPS 中完成所有 API 调用并启用 SSL 证书固定,从而使代理 Debugging/Man In The Middle 难以实现。

最终,您应该清楚地确定哪些 API 调用应该是 public(只有 OAuth 令牌才能访问这些资源)以及哪些应该需要用户身份验证。

PS:Google 的(Android 安全最佳实践)[https://developer.android.com/training/best-security.html] 可能是一个好的开始!