小编Gre*_*ens的帖子

什么可以防止其他应用窃取我的 Google OAuth 客户端 ID?

我创建了一个 Android 应用程序,它使用 AppAuth 通过 Google OAuth 进行身份验证。在 Google Cloud Platform Console 中,我为我的应用程序创建了一个 Android OAuth 2.0 客户端 ID,并提供了应用程序包名称和签名证书指纹。一切正常。

我想验证只有我的应用程序可以使用该客户端 ID。因此,我使用不同的包名称创建了第二个应用程序,并使用不同的签名证书对其进行了签名。使用相同的客户端 ID,我仍然能够通过 Google 进行身份验证并访问 API。我认为情况不应该如此。我正在查看 AppAuth 的源代码,它看起来在身份验证流程中从未使用过应用程序签名或包名称。当然,它使用 PKCE,但我预计会发生更多事情。

因此,如果我可以轻松窃取自己的客户端 ID,那么如何阻止其他人从我的 APK 中提取我的客户端 ID 并将其用于身份验证呢?根据我的包名称,我用于重定向 URI 的自定义方案很容易找出。因此,rouge 应用程序可以将 AppAuth 配置为使用类似的重定向 URI 并捕获授权结果。而且由于 PKCE 仅用于验证来自同一位置的授权请求和代码交换,因此恶意应用程序会同时执行这两项操作,因此也没有真正的保护。

我可以将客户端 ID 类型切换为 Web 或其他,但这需要我使用客户端密钥,如果将其嵌入到应用程序中,这同样不安全。

我是否遗漏了什么,或者 Google OAuth 是否完全按照预期工作?

android google-oauth appauth

7
推荐指数
1
解决办法
3123
查看次数

标签 统计

android ×1

appauth ×1

google-oauth ×1