Хорошо, мне может не хватать чего-то простого здесь, в Angular, но мне действительно нужна помощь. Я пытаюсь программно предоставить подписке роль READER участника-службы. Если я использую PostMan, он работает нормально. Однако, когда я отправляю тот же запрос PUT через Angular6, я получаю от Azure ошибку 400, в которой говорится:
Содержание вашего запроса недействительно, и исходный объект не может быть десериализован. Сообщение об исключении: «Разрешения на обязательное свойство» не найдены в JSON. Путь 'properties', строка 1, позиция 231. '
В обоих случаях отправляется JSON:
{
"properties":
{
"roleDefinitionId":"/subscriptions/{some_subscription_guid}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
"principalId":"{some_service_provider_guid}"
}
}
Я захватил трафик из обоих запросов, и они отображаются как полезные данные приложения / json в PUT. Итак, я не понимаю, что неправильно десериализуется через 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>" }}
request
от angular. Воспользуйтесь вкладкойRaw
в инспекторе Fiddler. Вы можете убрать / скрыть заголовок авторизации. - person astaykov   schedule 16.07.2018