Добавление участников в корпоративное приложение Azure через интерфейс командной строки

У нас есть корпоративное приложение в нашем клиенте Azure AD для подготовки пользователей к другой платформе SaaS. В настоящее время он настраивается только с опцией «Синхронизировать только назначенных пользователей и групп», поскольку мы не хотим, чтобы переносился весь каталог.

Мой вопрос прост: есть ли способ использовать az-cli (в настоящее время установлена ​​версия 2.0.60) для добавления пользователей в это корпоративное приложение?

Я проверил:

  • az ad sp
  • приложение az ad
  • назначение роли az (похоже, работает только с подписками и ресурсами, указанными ниже)

Я ожидал, что будет запущена простая команда назначения ролей, которая добавляет пользователя по upn / objectId в корпоративное приложение.

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

Спасибо!


person kanthael    schedule 27.03.2019    source источник
comment
Просто подтвердите: вы хотите добавить пользователя в Users and groups или Owners на скриншоте? i.stack.imgur.com/XOsx1.png   -  person Joy Wang    schedule 27.03.2019
comment
Пользователи и группы   -  person kanthael    schedule 27.03.2019
comment
Тот, кто заинтересован в этом, должен проголосовать здесь: github.com/Azure/azure -sdk-for-net / issues / 8794   -  person Ohad Schneider    schedule 12.05.2020


Ответы (2)


Похоже, вы не могли сделать это через Azure CLI, я могу решить эту проблему с помощью PowerShell.

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

Во-первых, вам необходимо установить модуль PowerShell AzureAD.Standard.Preview, который поддерживает powershell. core, вы можете понять, что модуль является эквивалентом модуля AzureAD в ядре PowerShell, они имеют такое же использование, это предварительная версия, для получения более подробной информации см. этот ссылка.

Затем попробуйте команду New-AzureADUserAppRoleAssignment как показано ниже, в этом примере пользователю назначается приложение с идентификатором роли приложения по умолчанию.

New-AzureADUserAppRoleAssignment -ObjectId "<user objectid>" -PrincipalId "<user objectid>" -ResourceId "<service principal objectid(i.e. Enterprise Application objectid)>" -Id ([Guid]::Empty)

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

Проверить на портале:

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

Если вы хотите назначить пользователю определенную роль в приложении, попробуйте следующую команду.

$username = "<You user's UPN>"
$app_name = "<Your App's display name>"
$app_role_name = "<App role display name>"

# Get the user to assign, and the service principal for the app to assign to
$user = Get-AzureADUser -ObjectId "$username"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }

#Assign the user to the app role
New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
person Joy Wang    schedule 27.03.2019
comment
Огромное спасибо! Кажется, работает хорошо, но, к сожалению, я не могу установить модуль на моем локальном клиенте, поскольку он выглядит только Internal PSGallery, но я могу запустить этот командлет из облачной оболочки Azure. Я также не являюсь поклонником HttpBadRequest из этого вызова, если пользователь уже находится в приложении, но я могу обойти это. - person kanthael; 27.03.2019

Если это поможет, я сделал это с помощью "az rest". Мы все здесь используем Mac, и ядро ​​PowerShell кажется сломанным в нескольких местах (не поддерживает вход на основе сертификатов, и командлет New-AzureADUserAppRoleAssignment для нас не работал. Мы использовали предварительную версию. Документы Graph API также совершенно неверны, поэтому потребовалось немного возиться, чтобы получить правильную конечную точку и полезную нагрузку. Пример ниже:

az rest --method post --uri https://graph.microsoft.com/beta/users/ $ user / appRoleAssignments --body "{\" appRoleId \ ": \" $ appRoleId \ ", \" PrincipalId \ ": \" $ user \ ", \" resourceId \ ": \" $ spObjectId \ "}" --headers "Content-Type = application / json"

Можно опубликовать образец сценария bash для вышеупомянутого, который устанавливает вары, если кому-то интересно?

person Brendan Foxen    schedule 06.02.2020
comment
Привет, @ brendan-foxen, мне было бы интересно! Также интересно узнать, изменился ли ваш подход с тех пор, как вы разместили это. Спасибо - person Akhil Nair; 21.08.2020
comment
это также работает с группами, просто заменяя пользователей группами и $ user на $ group - person h-kippo; 21.05.2021