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 - 这在设备上很容易,但在服务器端更难。
我没有兴趣按原样验证我的客户。
但是,我确实想确保访问我的 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 - 这在设备上很容易,但在服务器端更难。