如何使用其他 Azure 服务对 IoT Central 设备进行身份验证? (例如:下载 OTA bin)
How to Authentication IoT Central devices with other Azure services? (example: download OTA bin)
在 IOT 的参考架构中 Hub\Central 您可以轻松地看到如何使用 SAS 或 X509 证书进行设备身份验证。例如,查看此 MXChip OTA 示例。 (我的粉红色笔记)
参考文章:Azure MXChip IoT DevKit Firmware OTA (Over-the-Air)
当我们扩展到其他 Azure 服务时,您能否利用此身份验证进行其他操作,例如为 OTA 下载文件。
我能想到的唯一方法是:
a) 通过默默无闻的方式确保下载端点的安全(不太好)。
b) 引入 shim 服务并在那里实现额外的身份验证层。
A好像不好。 B好像有点浪费。我觉得我错过了选项 C,或者缺少有关此选项的 Azure 方式的正确信息。
谢谢!
以下是使用 IoT Central 应用程序从 Azure 存储 blob 容器下载设备文件的步骤:
为设备文件上传配置 IoT Central 应用程序。
上传到配置的存储 blob 容器请求 blob 以供设备下载(在我的示例中:container=iotc,deviceId=device123,blobname=test.json)
为您的 IoT Central 应用程序生成设备连接字符串、主机名和 sasToken,查看更多实现细节here。
基于步骤 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"
}
根据步骤 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
通知 IoT Central 应用程序的底层 IoT 中心设备已结束下载过程,请参阅 REST POST 请求。请注意,您将在步骤 4 中收到 correlationId。
关于我最初关于使用经过身份验证的设备会话访问其他 Azure 服务的问题,无论是一般的还是专门用于下载 OTA 文件的目的。这是不可能的。
您需要实施额外的身份验证机制和您自己的服务,在您的应用程序中使用服务特定的 SDK,或者对于带有固件更新的 Blob 存储,使用公开可用的下载点。
注意:Roman 的回答显示了如何上传和访问上传的文件。它可能会帮助一些最终会来到这里的人。
在 IOT 的参考架构中 Hub\Central 您可以轻松地看到如何使用 SAS 或 X509 证书进行设备身份验证。例如,查看此 MXChip OTA 示例。 (我的粉红色笔记)
参考文章:Azure MXChip IoT DevKit Firmware OTA (Over-the-Air)
当我们扩展到其他 Azure 服务时,您能否利用此身份验证进行其他操作,例如为 OTA 下载文件。
我能想到的唯一方法是:
a) 通过默默无闻的方式确保下载端点的安全(不太好)。
b) 引入 shim 服务并在那里实现额外的身份验证层。
A好像不好。 B好像有点浪费。我觉得我错过了选项 C,或者缺少有关此选项的 Azure 方式的正确信息。
谢谢!
以下是使用 IoT Central 应用程序从 Azure 存储 blob 容器下载设备文件的步骤:
为设备文件上传配置 IoT Central 应用程序。
上传到配置的存储 blob 容器请求 blob 以供设备下载(在我的示例中:container=iotc,deviceId=device123,blobname=test.json)
为您的 IoT Central 应用程序生成设备连接字符串、主机名和 sasToken,查看更多实现细节here。
基于步骤 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" }
根据步骤 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
通知 IoT Central 应用程序的底层 IoT 中心设备已结束下载过程,请参阅 REST POST 请求。请注意,您将在步骤 4 中收到 correlationId。
关于我最初关于使用经过身份验证的设备会话访问其他 Azure 服务的问题,无论是一般的还是专门用于下载 OTA 文件的目的。这是不可能的。
您需要实施额外的身份验证机制和您自己的服务,在您的应用程序中使用服务特定的 SDK,或者对于带有固件更新的 Blob 存储,使用公开可用的下载点。
注意:Roman 的回答显示了如何上传和访问上传的文件。它可能会帮助一些最终会来到这里的人。