通过 REST 为 Azure DPS 中的个人注册更新证书 API

Update certificate for an individual enrollment in azure DPS via REST API

我正在通过 REST api 在 azure DPS 上进行操作。我能够通过 REST API.The Url 在“创建新的个人注册”中成功地 post 一项新规定,使用的是“https://name.azure-devices-provisioning”。 net/enrollments/registrationId?api-version=2019-03-31";.我当前的任务是为 DPS 中的个人注册更新证书。我正在提取证书的 body 并将其附加到请求 body 并执行 PUT 操作。但我收到一条错误消息,提示“已存在具有不同证书信息的注册”。我提供 content-type 和授权 sas 令牌作为 headers。在请求 body 中,我传递了 eTag。我想我已经为更新操作清除了所有 pre-requisites。如果我在这里做错了什么,请帮助我理解。提前致谢!

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

我们可以一步一步地开始,我已经用 Azure DPS via REST API call 成功更新了我的 x509 证书。希望对您的查询有所帮助。

第 1 步: 使用 x509 证书创建个人注册,以 base64 格式传递。请记下响应中的 'eTag' 值。

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

第 2 步:现在是时候用新证书更新现有注册了。使用 base64 格式。在请求 header 中使用“If-Match”,值是上一步中的“eTag”obtained/copied。

下图显示了带有“If-match =eTag”的请求 Header,用于更新现有实体。

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

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

示例请求body,以防对任何人有用。

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

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