Почему я не могу добавить Add ReplyUrl в приложение AAD с помощью принципа службы и Azure CLI?

Мне нужно добавить ReplyUrl в приложение AAD с помощью субъекта-службы с помощью Azure CLI, но я получаю сообщение об ошибке «Недостаточно прав для завершения операции». Изначально я пробовал это в Azure DevOps, но теперь воспроизвел это только с помощью интерфейса командной строки.

Я начал использовать DevOps и принципала службы, созданного при подключении клиента Target AAD к моей организации DevOps. Я предоставил разрешения API Microsoft.Graph.Application.ReadWrite.All субъекту службы и дал согласие администратора. Я создал новый ClientSecret и использовал его для входа в систему клиента с помощью интерфейса командной строки. Когда я запускаю команду для обновления URL-адресов ответов, я получаю ошибку недостаточных прав, описанную выше.

Если я запускаю команду CLI из Cloud Shell bash, она работает нормально.

az login --service-principal -u xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx -p xxxxxxxxxxxxx --tenant xxxxxxxxxx 

[
  {
    "cloudName": "AzureCloud",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "isDefault": true,
    "name": "Windows Azure MSDN - Visual Studio Ultimate",
    "state": "Enabled",
    "tenantId": "xxxxxxxxxxxxxxxxxxx",
    "user": {
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "type": "servicePrincipal"
    }
  }
]

тогда

az ad app update --id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  --reply-urls https://localhost:44381/ 

Insufficient privileges to complete the operation. 

Если я запускаю команду обновления приложения az ad из облачной оболочки, она работает нормально.
Если я попытаюсь использовать субъект службы, созданный DevOps, я получу сообщение об ошибке.

Я только что создал чистого нового принципала вне DevOps (az ad app create-for-rbac), а затем вручную добавил разрешение Application.ReadWrite.All и согласился на это - и это тоже дает мне ту же ошибку!

Разрешения и согласие API приложения

Я рассмотрел похожие вопросы, но на самый близкий был ответ, в котором нам нужно предоставить правильные разрешения и предоставить согласие в качестве ответа, что я уже сделал.


person Nick Hill    schedule 02.08.2019    source источник
comment
Если мой ответ полезен, примите его как ответ (нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный). Спасибо.   -  person Tony Ju    schedule 15.08.2019


Ответы (1)


Вы предоставили неправильные разрешения. Azure CLI использует конечную точку AAD Graph, поэтому вам необходимо предоставить разрешения Azure AD Graph API для субъекта-службы, а не разрешение Microsoft Graph API.

Вам нужно разрешение Application.ReadWrite.All (Azure AD Graph).

введите здесь описание изображения

Примечание. При кешировании браузера на портале создается впечатление, что URL-адреса ответов не обновлялись. Просто откройте портал еще раз, вы увидите обновление.

person Tony Ju    schedule 05.08.2019