ADAL для MSAL — недостаточно привилегий для завершения операции

#azure #azure-devops #azure-active-directory #azureadgraph-deprecation #adal-deprecation

#azure #azure-devops #azure-active-directory #azureadgraph-устаревание #adal-осуждение

Вопрос:

У меня есть сценарий, в котором мне нужно добавить приложение в группу безопасности из конвейера DevOps. У меня есть следующий сценарий, который работает просто отлично:

  1. в конвейере у меня есть следующий сценарий powersel:
 if (!((Get-AzADGroupMember -ObjectId ((Get-AzADGroup -DisplayName $groupName).id)).DisplayName -eq $appName)) {Add-AzADGroupMember -MemberObjectId (Get-AzADServicePrincipal -DisplayName $appName).id -TargetGroupObjectId (Get-AzADGroup -DisplayName $groupName).id} else {"member is already part of the group"}
 
  1. участник службы имеет разрешение API для Azure Active Directory Graph с помощью Directory.Read.Все разрешения:

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

  1. участник службы является владельцем группы безопасности:

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

Проблема в том, что Azure Active Directory Graph находится на устаревшем пути, поэтому я изменил разрешение на рекомендуемое разрешение Microsoft Graph:

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

но теперь я получаю «Недостаточно привилегий для завершения операции». ошибка

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

Пожалуйста, кто-нибудь может посоветовать, что еще мне нужно настроить, чтобы это работало?

Спасибо.

Комментарии:

1. Не получить последнюю информацию. Просто хотите проверить, полезен ли для вас приведенный ниже ответ? Если да, вы можете принять ответ , который также может принести пользу другим, у кого такая же головоломка, как и у вас, и мы могли бы заархивировать эту тему. Кроме того, не стесняйтесь оставлять комментарии ниже, если у вас все еще есть какие-либо вопросы по этому поводу:-)

Ответ №1:

Хотя AAD Graph находится на пути устаревания, разрешения MS Graph и AAD graph нельзя путать, они не совпадают.

Вы можете использовать fiddler4 для захвата запроса командлета Powershell Az и обнаружить, что на самом деле он вызывает AAD Graph, а не MS Graph внизу.

Когда мы используем токен доступа для вызова официального API, API должен проверить, действителен ли токен доступа.

Существует утверждение с именем aud , которое означает ресурс, который вы вызываете. Если вы назначаете разрешения MS Graph (например: https://graph.microsoft.com/user.read ) в приложении Azure AD, но вызываемым ресурсом является AAD Graph https://graph.windows.net/ , разрешение MS Graph, безусловно, не будет включено в маркер доступа. И в это время требуемое разрешение должно быть https://graph.windows.net/user.read . Вот почему вы получаете сообщение об ошибке Недостаточно привилегий для завершения операции.

Поэтому в этом случае вам следует продолжать использовать разрешения AAD Graph.

Не беспокойтесь о выходе из AAD Graph. До этого дня MS должна быть в состоянии обеспечить переход с AAD Graph на MS Graph или другим способом, чтобы он продолжал работать без особых усилий со стороны пользователей.