设备上嵌入式客户端应用的身份验证

时间:2019-08-07 07:27:46

标签: firebase google-cloud-platform google-cloud-firestore

我想创建一个物联网设备,该设备将在Firestore中存储一些收集的数据和配置。

用户应该能够从移动应用访问其设备的数据。

我担心设备的安全性,以防其被反向工程。

理论上,设备应该只能访问和修改其数据。 用户可能可以访问多种设备。

我已经看到了多种使用Firebase进行身份验证的方法:

  • Firebase Admin,仅用于后端,所以我不能使用它。
  • 用于客户端应用程序的Firebase身份验证,用于对用户进行身份验证。

我无法使用Firebase身份验证,因为该设备可能由多个用户使用,甚至没有用户使用,但仍将其数据更新为Firestore。

我应该对设备上的客户端应用程序使用哪种身份验证? 我看到了多种解决方案:

  • 为每个只能访问设备数据并嵌入其凭据的设备创建一个用户。这似乎是一个沉重的解决方案,并且用户数据表将更难以管理。
  • 为每个设备创建API密钥以访问Firestore,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

您可以使用匿名身份验证来授权您的IoT设备访问Firestore。匿名身份验证不会限制您的设备,比如说一个电子邮件密码身份验证,因此您可以将设备分配给任何用户。

您将需要实现安全功能,以限制IoT设备何时可以读写Firestore。如果您认为设备受到威胁,这将帮助您切断对Firestore的访问。

我假设每个设备都会有一些唯一的序列号来标识它。 创建一个数据节点,将序列号映射到两个布尔a(read),b(write)。发行设备时,或当您的应用程序中的用户请求使用该设备时,请将布尔值标记为true。这将确定给定的序列号对其具有读写权限。

现在在设备将要写入/读取的数据节点上(例如config / {serialNumber}或log / {serialNumber}),添加firestore安全规则,该规则将检查给定的序列号是否已被授权对其进行读写。

您还可以使用log / {serialNumber} / {uid}这样的方案,根据使用数据的用户将物联网写入数据分成大块