3

我们的 Azure AD 租户中有一个企业应用程序,用于将用户预配到另一个 SaaS 平台。目前它仅使用“仅同步分配的用户和组”选项进行设置,因为我们不希望整个目录被带过来。

我的问题很简单,有没有办法使用 az-cli(目前已安装 2.0.60 版)将用户添加到该企业应用程序?

我检查了:

  • az ad sp
  • az 广告应用
  • az 角色分配(似乎只适用于下面的订阅和资源)

我希望有一个简单的角色分配命令可以运行,通过 upn/objectId 将用户添加到企业应用程序。

我团队中的每个人都在使用 Mac,如果有更好的支持,我们可以使用 PowerShellCore。

谢谢!

4

2 回答 2

5

看来你不能通过 Azure CLI 做到这一点,我的解决方法是使用 powershell 来做到这一点。

我团队中的每个人都在使用 Mac,如果有更好的支持,我们可以使用 PowerShellCore。

首先,你需要安装AzureAD.Standard.Preview支持powershell core的powershell模块,你可以理解这个模块相当于AzureADpowershell core中的module,它们的用法是一样的,都是预览版,更多细节见这个链接

然后尝试以下命令New-AzureADUserAppRoleAssignment ,此示例将用户分配给具有默认应用程序角色 ID 的应用程序。

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
于 2019-03-27T07:49:11.980 回答
4

如果有帮助,我会使用“az rest”来完成此操作。我们都在这里使用 Mac,powershell 核心似乎在一些地方损坏(不支持基于证书的登录,并且 New-AzureADUserAppRoleAssignment cmdlet 对我们不起作用。我们使用的是预览版。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"

如果有人感兴趣,可以为上述设置 vars 的示例 bash 脚本吗?

于 2020-02-06T08:55:12.793 回答