【问题标题】:Add members to Azure Enterprise App through CLI通过 CLI 将成员添加到 Azure Enterprise App
【发布时间】:2019-03-27 06:15:00
【问题描述】:

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

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

我检查了:

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

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

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

谢谢!

【问题讨论】:

标签: azure-active-directory azure-cli az


【解决方案1】:

您似乎无法通过 Azure CLI 执行此操作,我的解决方法是使用 powershell 执行此操作。

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

首先需要安装支持powershell core的AzureAD.Standard.Previewpowershell模块,可以理解为相当于powershell core中的AzureAD模块,用法相同,都是预览版,用于更多详情请参阅link

然后尝试下面的命令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

【讨论】:

  • 非常感谢!似乎工作得很好,但不幸的是,我似乎无法在本地客户端上安装该模块,因为它似乎只是内部 PSGallery,但我可以从 Azure 的 Cloud Shell 运行该 cmdlet。如果用户已经在应用程序中,我也不喜欢该调用中的 HttpBadRequest,但我可以解决那个问题。
【解决方案2】:

如果有帮助,我会使用“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 脚本发布吗?

【讨论】:

  • 嘿@brendan-foxen - 我会感兴趣的!也有兴趣知道自您发布此内容以来您的方法是否有所进展。谢谢
  • 这也适用于组,只需将“users”替换为组,将“$user”替换为“$group”
猜你喜欢
  • 2021-10-08
  • 2021-02-11
  • 2020-09-06
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多