好的,我可能在 Angular 中遗漏了一些简单的东西,但我真的可以使用一些帮助。我正在尝试以编程方式将服务主体读者角色授予订阅。如果我使用 PostMan,它可以正常工作。但是,当我通过 Angular6 发送相同的 PUT 请求时,我从 Azure 收到 400 错误,上面写着:
您的请求内容无效,无法反序列化原始对象。异常消息:在 JSON 中找不到“必需属性”权限。路径“属性”,第 1 行,位置 231。
在这两种情况下发送的 JSON 是:
{
"properties":
{
"roleDefinitionId":"/subscriptions/{some_subscription_guid}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
"principalId":"{some_service_provider_guid}"
}
}
我已经从两个请求中捕获了流量,它们在 PUT 上显示为 application/json 有效负载。因此,我不知道通过 Azure 错误地反序列化导致此错误的原因。我正在尝试遵循此处记录的 REST 说明:https ://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-rest
有什么我想念的想法吗?
更新
为每个请求添加 RAW REQUEST。我已经替换了任何敏感数据(访问令牌、GUID 等),而没有更改 Fiddler 输出中的任何其他内容。
PUT https://management.azure.com/subscriptions/<VALID_SUBSCRIPTION_WAS_HERE>/providers/Microsoft.Authorization/roleDefinitions/7ec2aca1-e4f2-4152-aee2-68991e8b48ad?api-version=2015-07-01 HTTP/1.1
Host: management.azure.com
Connection: keep-alive
Content-Length: 233
Accept: application/json, text/plain, */*
Origin: http://localhost:4200
Authorization: Bearer <VALID_TOKEN_WAS_HERE>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Content-Type: application/json
Referer: http://localhost:4200/token/<VALID_DOMAIN_WAS_HERE>.onmicrosoft.com/graph
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
{"properties": { "roleDefinitionId":"/subscriptions/<VALID_SUBSCRIPTION_GUID_HERE>/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7", "principalId":"<VALID_OBJECTID_HERE>" }}