0

而不是 SDK,而是直接调用 azure iot provisioning rest api 来注册设备,然后注册它。

注册调用 rest api 工作正常,但注册调用失败并出现错误

""需要授权,使用提供的密钥重新发送请求""

  • 在错误响应中给我keyname 和 authenticationkey 。

我使用 fiddler 截获了 sdk 如何进行注册调用,并注意到 sdk 首先得到 401 并出现上述错误,然后它重新发出另一个成功的请求。

目前正在根据 azure dps 的共享键名和主键生成 sas 令牌。

我有一个 Windows 应用程序,它将调用这个 webapi 来在一个电话中注册+注册设备。我将registrationid、tpmendoresmentkey、storagekey 传递给api。这个 api 在内部对 azure rest api 进行了 2 个 httpclient 调用:

  1. 将设备注册为单独注册。
  2. 注册设备

请帮助任何有助于理解解决它的想法或指示。

4

1 回答 1

1

当我尝试注册 TPM 设备时,我可以重现此行为。在投入用于处理 TPM 设备寄存器的源代码之后,在我看来,这是一个设计特性。您可以参考以下链接查看 SDK 检查响应并通过响应返回的键生成 SAS 令牌:

TpmDelegatingHandler#L27L64

如果可能的话,我建议您使用 Azuire IoT Device Provision Service SDK,因为它对开发人员来说是真正的修道院。如果您只能使用 REST,您可以参考上面链接中的代码来生成 SAS 令牌并使用该令牌发送注册设备重试请求。

于 2018-03-30T08:52:46.073 回答