如何使用其他 Azure 服务对 IoT Central 设备进行身份验证? 例如:下载OTA bin

问题描述

在 IOT Hub\Central 的参考架构中,您可以轻松了解 SAS 或 X509 证书如何用于设备身份验证。作为示例,请查看此 MXChip OTA 示例。 (我的粉红色笔记)

参考文章Azure MXChip IoT DevKit Firmware OTA (Over-the-Air)

MXChip OTA Example

当我们扩展到其他 Azure 服务时,您能否利用此身份验证进行其他操作,例如下载 OTA 文件

我能想到的唯一方法是:

a) 通过无闻来确保下载端点的安全(不太好)。
b) 引入一个 shim 服务并在那里实现一个额外的身份验证层。

A 看起来很糟糕。 B好像有点浪费。我觉得我缺少选项 C 或缺少有关 Azure 方式的正确信息。

谢谢!

解决方法

以下是使用 IoT Central 应用从 Azure 存储 blob 容器下载设备文件的步骤:

  1. 为设备文件上传配置 IoT Central 应用程序。 enter image description here

  2. 上传到配置的存储 blob 容器请求 blob 以供设备下载(在我的示例中:container=iotc、deviceId=device123、blobname=test.json)

  3. 为您的 IoT Central 应用程序生成设备连接字符串、主机名和 sasToken,查看更多实现细节 here

  4. 根据第 3 步的响应,使用 REST POST 请求向 IoT Central 应用程序的底层 IoT 中心发送特定 blob 引用,例如:

    {
       "correlationId":"****","hostName":"****.blob.core.windows.net","containerName":"iotc","blobName":"device123/test.json","sasToken":"?sv=2018-03-28&sr=b&sig=****&se=2021-01-20T10%3A26%3A59Z&sp=rw"
    }
    
  5. 根据第 4 步的响应,使用 REST GET 请求下载 blob,请参见以下示例:

    https://****.blob.core.windows.net/iotc/device123/test.json?sv=2018-03-28&sr=b&sig=****&se=2021-01-20T10%3A26%3A59Z&sp=rw
    
  6. 通知 IoT Central 应用程序的底层 IoT 中心设备已结束下载过程,请参阅 REST POST 请求。请注意,您将在步骤 4 中收到 correlationId

,

关于我最初提出的关于使用经过身份验证的设备会话访问其他 Azure 服务的问题,无论是一般情况下还是专门出于下载 OTA 文件的目的。这是不可能的。

您需要实施额外的身份验证机制和您自己的服务,在您的应用程序中使用服务特定的 SDK,或者对于具有固件更新的 Blob 存储,请使用公开可用的下载点。

注意:来自 Roman 的答案显示了如何上传和访问上传的文件。它可能会帮助一些最终会来到这里的人。