我正在通过 REST api 对 azure DPS 进行操作。我可以通过 REST API 在“创建新的个人注册”中成功发布新规定。使用的 URL 是“https://name.azure-devices-provisioning.net/enrollments/registrationId?api-version= 2019-03-31";. 我当前的任务是更新 DPS 中个人注册的证书。我正在提取证书正文并将其附加到请求正文并执行 PUT 操作。但我收到一条错误消息,提示“注册已经存在不同的证书信息”。我提供内容类型和授权 sas 令牌作为标头。在请求正文中,我正在传递 eTag。我想我已经清除了更新操作的所有先决条件。请帮助我了解我是否在这里做错了什么。提前致谢!
2 回答
要更新 DPS 中的个人注册,您还必须在请求标头中添加 etag 值。它的标题属性名称是If-Match. 有关详细信息,请参阅https://docs.microsoft.com/en-us/rest/api/iot-dps/createorupdateindividualenrollment/createorupdateindividualenrollment#request-headers
我们可以逐步开始,我已通过 REST API 调用成功地使用 Azure DPS更新了我的 x509 证书。我希望这对您的查询有所帮助。
步骤1:使用x509证书创建个人注册,以base64格式传递。请记下回复中的“eTag”值。
在 Azure DPS 门户中验证。我看到指纹与我的 x509 证书匹配。
第 2 步:现在是使用新证书更新现有注册的时候了。使用 base64 格式。在请求标头中使用“If-Match”,值是从上一步获得/复制的“eTag”。
下图显示了带有“If-match =eTag”的请求标头,用于更新现有实体。

最后,我们可以看到响应是更新操作成功。
在 Azure DPS 门户中验证。我看到指纹与我的新 x509 证书匹配。
示例请求正文,以防万一,如果它对任何人有用。
{
"attestation": {
"type": "x509",
"X509": {
"clientCertificates": {
"primary":{
"certificate":"base64 string of your cert"
}
}
}
},
"registrationId":"testenrollment10",
"capabilities":{"iotEdge":false},
"provisioningStatus": "enabled"
}
如果您在此问题上需要进一步帮助,请在下方留下您对此回复的评论。



