Firebase 证书身份验证

Firebase certificate authentication

我没有兴趣按原样验证我的客户。

但是,我确实想确保访问我的 FireBase 的任何人都经过授权。也就是说,它只能通过我的 Android 应用程序。

能以某种方式完成吗?我在 FireBase 文档中找不到任何选项或替代方案。

我看到的最佳方法是让我的应用程序由证书签名,并使用它授权自身。

要验证您的应用程序,请使用 FCM(但遗憾的是,它需要服务器代码):

  • 创建一个匿名的 firebase 帐户。
  • 使用 firebase 帐户 uid 向您的服务器发送一条 FCM 消息。
  • 服务器会创建一个节点,例如/uids/$uid/enabled
  • 有规则要求它,例如:

    ".read" : "root.child('uids').child(auth.uid).child('enabled').val() == true"

FCM 消息的原因是为了发送这样的消息,应用程序应该是 "registered",这意味着应用程序的开发者签名证书是已知的。任何试图发送此类 FCM 消息而不是通过您的应用程序的人都会失败 - 即使有人re-sign(并且可能修改)您的应用程序。

当然,缺点是您需要您的服务器接收 FCM - 这在设备上很容易,但在服务器端更难。