#azure #azure-devops #azure-active-directory #azureadgraph-deprecation #adal-deprecation
#azure #azure-devops #azure-active-directory #azureadgraph-устаревание #adal-осуждение
Вопрос:
У меня есть сценарий, в котором мне нужно добавить приложение в группу безопасности из конвейера DevOps. У меня есть следующий сценарий, который работает просто отлично:
- в конвейере у меня есть следующий сценарий 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"}
- участник службы имеет разрешение API для Azure Active Directory Graph с помощью Directory.Read.Все разрешения:
- участник службы является владельцем группы безопасности:
Проблема в том, что 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 или другим способом, чтобы он продолжал работать без особых усилий со стороны пользователей.