【问题标题】:Authentication for embedded client app on a device设备上嵌入式客户端应用程序的身份验证
【发布时间】:2019-08-07 07:27:46
【问题描述】:

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

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

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

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

我见过多种使用 Firebase 进行身份验证的方法:

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

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

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

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

【问题讨论】:

  • 您的 IoT 设备是否只能从 Firestore 读取数据?还是它也需要将数据写入firestore?
  • 也需要写入数据

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


【解决方案1】:

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

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

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

现在在您的设备将写入/读取的数据节点上(例如 config/{serialNumber} 或 log/{serialNumber}),添加 Firestore 安全规则,以检查给定的序列号是否被授权读取/写入它。

您还可以根据使用 log/{serialNumber}/{uid} 等方案的用户将 iot 写入数据分成块

【讨论】:

  • 恐怕这个答案可能不是因为匿名身份验证似乎无法从 python 脚本中获得。我说的对吗?
  • 你在使用python库吗?
  • 您可以随时使用rest api创建匿名身份验证。 firebase.google.com/docs/reference/rest/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2013-01-12
相关资源
最近更新 更多