Добавление участников в корпоративное приложение Azure через CLI

#azure-active-directory #azure-cli #az

#azure-active-directory #azure-cli #az

Вопрос:

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

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

Я проверил:

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

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

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

Спасибо!

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

1. Просто подтвердите: вы хотите добавить пользователя в Users and groups или Owners на скриншоте? i.stack.imgur.com/XOsx1.png

2. Пользователи и группы

3. Все, кто заинтересован в этом, должны проголосовать здесь: github.com/Azure/azure-sdk-for-net/issues/8794

Ответ №1:

Если это поможет, я сделал это с помощью 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 для вышеупомянутого, который устанавливает переменные, если кому-то интересно?

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

1. Привет, @brendan-foxen — мне было бы интересно! Также интересно узнать, изменился ли ваш подход с тех пор, как вы опубликовали это. Спасибо

2. это также работает с группами, просто заменяя «users» на groups и «$user» на «$ group»

Ответ №2:

Кажется, вы не смогли бы сделать это через Azure CLI, мой обходной путь — использовать powershell для этого.

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

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

Затем попробуйте выполнить команду 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
  

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

1. Большое спасибо! Кажется, работает хорошо, но, к сожалению, я не могу установить модуль на моем локальном клиенте, поскольку, похоже, это только внутренняя PSGallery, но я могу запустить этот командлет из облачной оболочки Azure. Я также не являюсь поклонником HttpBadRequest из этого вызова, если пользователь уже находится в приложении, но я могу обойти это.