如何在Android应用程序中保护服务帐户凭据?

时间:2018-12-21 03:22:11

标签: android security google-cloud-platform service-accounts

我有一个与Google云API服务(例如语音到文本,翻译,NLP等)通信的android应用。该应用正在使用服务帐户来执行此操作,并且私钥文件存储在应用本身中。我知道这是一个坏习惯,因为任何人都可以使用反汇编器看到它,但是我不确定将其存储在Android设备中的其他位置。

以下文章建议将此文件存储在构建服务器上:

https://brightinventions.pl/blog/securing-your-google-service-account-key-in-builds/

但是,我认为它不能解决问题,因为服务凭据文件已包含在发布包中。

如果您能想到解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

请勿在应用程序中嵌入服务帐户凭据。服务帐户凭据具有永久有效期,这意味着您将受到侵犯。您可以删除服务帐户凭据,但随后必须重新发布您的应用程序。

您有几种选择:

  1. 实施Google OAuth,以便您的用户通过Google帐户进行身份验证。进行身份验证时,请使用正确的Google OAuth范围提供临时权限。
  2. 实施临时访问令牌。您的用户将连接到您的网站,进行身份验证,并且您的代码将为他们提供根据服务帐户凭据创建的临时访问令牌。该访问令牌将过期。默认值为3600秒,但您可以控制它。
  3. 您的用户将通过您的网站API发出所有请求。您可以控制用户的身份验证。然后,您的网站代码代表用户发出API请求。这不是理想的解决方案,因为所有流量都流经您的网站(Compute Engine,App Engine等),您需要为此带宽付费。