0

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

参考文章:Azure MXChip IoT DevKit 固件 OTA(空中下载)

MXChip OTA 示例

当我们扩展到其他 Azure 服务时,您是否可以将此身份验证用于其他操作,例如为 OTA 下载文件。

我能想到的唯一方法是:

a)通过默默无闻(不是很好)让下载端点保持安全。
b) 引入 shim 服务并在那里实现额外的身份验证层。

A好像不好。B好像很浪费。我觉得我缺少选项 C 或缺少有关此选项的 Azure 方式的正确信息。

谢谢!

4

2 回答 2

1

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

  1. 为设备文件上传配置 IoT Central 应用程序。 在此处输入图像描述

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

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

  4. 根据第 3 步的响应,使用对 IoT Central 应用程序底层 IoT 中心的REST POST请求获取特定 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 中收到相关性ID。

于 2021-01-20T10:33:44.773 回答
0

关于我关于使用经过身份验证的设备会话访问其他 Azure 服务的原始问题,一般来说,特别是为了下载文件以供 OTA 使用。这是不可能的。

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

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

于 2021-01-28T18:02:08.537 回答