getting error : Authorization required, resend request using supplied key

getting error : Authorization required, resend request using supplied key

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

注册呼叫休息 api 工作正常但注册呼叫失败并出现错误

""Authorization required, resend request using supplied key""

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

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

我有 windows 应用程序,它将调用此 Webapi 以在一次调用中注册 + 注册设备。我将 registrationid、tpmendoresmentkey、storagekey 传递给 api。此 api 在内部对 azure rest api 进行了 2 个 httpclient 调用:

  1. 将设备注册为个人注册。
  2. 注册设备

请提供有助于理解解决问题的任何想法或指示。

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

TpmDelegatingHandler#L27L64

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