1

我正在通过 REST api 对 azure DPS 进行操作。我可以通过 REST API 在“创建新的个人注册”中成功发布新规定。使用的 URL 是“https://name.azure-devices-provisioning.net/enrollments/registrationId?api-version= 2019-03-31";. 我当前的任务是更新 DPS 中个人注册的证书。我正在提取证书正文并将其附加到请求正文并执行 PUT 操作。但我收到一条错误消息,提示“注册已经存在不同的证书信息”。我提供内容类型和授权 sas 令牌作为标头。在请求正文中,我正在传递 eTag。我想我已经清除了更新操作的所有先决条件。请帮助我了解我是否在这里做错了什么。提前致谢!

4

2 回答 2

0

要更新 DPS 中的个人注册,您还必须在请求标头中添加 etag 值。它的标题属性名称是If-Match. 有关详细信息,请参阅https://docs.microsoft.com/en-us/rest/api/iot-dps/createorupdateindividualenrollment/createorupdateindividualenrollment#request-headers

于 2021-01-22T17:46:22.143 回答
0

我们可以逐步开始,我已通过 REST API 调用成功地使用 Azure DPS更新了我的 x509 证书。我希望这对您的查询有所帮助。

步骤1:使用x509证书创建个人注册,以base64格式传递。请记下回复中的“eTag”值。

61573-image.png

在 Azure DPS 门户中验证。我看到指纹与我的 x509 证书匹配。

61603-image.png

第 2 步:现在是使用新证书更新现有注册的时候了。使用 base64 格式。在请求标头中使用“If-Match”,值是从上一步获得/复制的“eTag”。

下图显示了带有“If-match =eTag”的请求标头,用于更新现有实体。 61544-image.png

最后,我们可以看到响应是更新操作成功。

61518-image.png

在 Azure DPS 门户中验证。我看到指纹与我的新 x509 证书匹配。

61588-image.png

示例请求正文,以防万一,如果它对任何人有用。

 {
  "attestation": {
         "type": "x509",
         "X509": {
            "clientCertificates": {
                                "primary":{
                                 "certificate":"base64 string of your cert"
                                 }
                                 }    
                                   }
     },
 "registrationId":"testenrollment10",
 "capabilities":{"iotEdge":false},
 "provisioningStatus": "enabled"
 }

如果您在此问题上需要进一步帮助,请在下方留下您对此回复的评论。

于 2021-01-28T22:11:19.967 回答