如何通过PowerShell/Azure CLI为Azure AD原生应用添加用户/组并分配角色?
如何为Azure AD原生应用添加用户/组并分配应用角色
当然可以!虽然Azure AD原生应用在Portal的企业应用界面里找不到直接添加用户/组、分配角色的选项,但我们可以通过PowerShell或者Azure CLI来完成操作——本质上是调用Azure AD的底层API实现,和Web App/API的逻辑是一致的。
不过先提个前提:不管是Web还是原生应用,要分配应用角色,必须先在应用注册的「应用角色」页面定义好对应的角色(原生应用也支持在应用注册里添加角色,只是Portal的企业应用入口没展示分配选项而已)。
方法一:使用Microsoft Graph PowerShell
现在微软更推荐用Microsoft Graph模块,步骤如下:
安装并连接Graph PowerShell
# 安装模块(首次运行需要) Install-Module Microsoft.Graph -Force # 连接并申请必要的权限 Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All, Directory.Read.All"获取原生应用的服务主体ID
你可以用应用名称或者客户端ID来查找:# 通过应用名称查找 $appServicePrincipal = Get-MgServicePrincipal -Filter "displayName eq '你的原生应用显示名称'" # 或者通过客户端ID查找 $appServicePrincipal = Get-MgServicePrincipal -Filter "appId eq '你的原生应用客户端ID'"获取要分配的用户/组对象ID
# 获取用户(替换为目标用户的UPN) $user = Get-MgUser -Filter "userPrincipalName eq 'user@yourdomain.com'" # 获取组(替换为目标组的名称) $group = Get-MgGroup -Filter "displayName eq '你的目标组名称'"获取要分配的应用角色ID
先找到你之前在应用注册里定义的角色(比如角色值为NativeAppUser):$appRole = $appServicePrincipal.AppRoles | Where-Object { $_.Value -eq "NativeAppUser" }创建应用角色分配
- 分配给用户:
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id ` -PrincipalId $user.Id ` -AppRoleId $appRole.Id ` -ResourceId $appServicePrincipal.Id - 分配给组:
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id ` -PrincipalId $group.Id ` -AppRoleId $appRole.Id ` -ResourceId $appServicePrincipal.Id
- 分配给用户:
方法二:使用Azure CLI
如果你更习惯用CLI,步骤也很清晰:
登录并设置租户
# 登录Azure账号 az login # 切换到目标租户(可选,如果你有多个租户) az account set --tenant "你的租户ID或域名"获取原生应用的服务主体ID
# 通过应用名称获取 app_sp_id=$(az ad sp list --display-name "你的原生应用显示名称" --query "[0].id" -o tsv) # 或者通过客户端ID获取 app_sp_id=$(az ad sp list --filter "appId eq '你的原生应用客户端ID'" --query "[0].id" -o tsv)获取用户/组对象ID
# 获取用户ID user_id=$(az ad user show --id "user@yourdomain.com" --query id -o tsv) # 获取组ID group_id=$(az ad group show --group "你的目标组名称" --query id -o tsv)获取应用角色ID
app_role_id=$(az ad sp show --id $app_sp_id --query "appRoles[?value=='NativeAppUser'].id" -o tsv)创建应用角色分配
- 分配给用户:
az ad app role assignment create --assignee $user_id --role $app_role_id --resource $app_sp_id - 分配给组:
az ad app role assignment create --assignee $group_id --role $app_role_id --resource $app_sp_id
- 分配给用户:
验证分配结果
操作完成后,你可以用以下命令验证分配是否成功:
- PowerShell:
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id - Azure CLI:
az ad app role assignment list --resource $app_sp_id
内容的提问来源于stack exchange,提问作者Web User
相关产品推荐
相关产品推荐

