You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非管理员用户如何在AAD v2端点为原生应用注册授予Power BI Embedded权限?

解决Power BI Embedded应用在AAD v2.0注册中无法批量授予用户权限的问题

你的核心困境很明确:旧版v1.0应用注册里的「授予权限」按钮(能让租户内所有用户自动同意权限)在v2.0中被移除,而你没有管理员权限无法点击「授予管理员同意」。好在你添加的所有权限都是无需管理员同意的委托权限,可以通过以下几种方式解决:

1. 引导用户手动完成权限同意

因为你的权限都属于用户可自主同意的类型,每个用户第一次访问应用时,会自动触发AAD的权限授权弹窗:

  • 用户打开你的React应用,触发Power BI嵌入流程时,会跳转到AAD的权限确认页面
  • 用户核对需要授权的权限列表后,点击「同意」
  • 完成授权后,用户就能正常访问Power BI报表和仪表板

这个方法零额外操作,适合用户量不大的场景,唯一的缺点是每个用户都要手动操作一次。

2. 用PowerShell批量触发用户权限同意

如果需要批量处理租户内用户的权限同意,可以借助Microsoft Graph PowerShell模块实现,不需要管理员权限(因为权限是用户可自主同意的):

  • 先安装Microsoft Graph模块:
    Install-Module Microsoft.Graph -Force
    
  • 连接到Microsoft Graph(用你的Power BI Pro账户或目标用户账户均可):
    Connect-MgGraph -Scopes "User.Read"
    
  • 针对单个用户执行权限同意:
    # 替换为你的应用客户端ID和目标用户UPN
    $clientId = "your-app-client-id"
    $userUpn = "target-user@your-tenant.com"
    # 填入你需要授权的所有权限范围
    $scopes = @("User.Read", "Capacity.Read.All", "Capacity.ReadWrite.All", "Content.Create.All", "Dashboard.Read.All", "Dashboard.ReadWrite.All", "Dataset.ReadWrite.All", "Group.Read", "Report.ReadWrite.All", "Workspace.Read.All", "Workspace.ReadWrite.All")
    
    # Power BI Service的固定服务主体ID,无需修改
    $powerBiServicePrincipalId = (Get-MgServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'").Id
    $userId = (Get-MgUser -UserId $userUpn).Id
    
    New-MgOauth2PermissionGrant -ClientId $clientId -ConsentType "Principal" -PrincipalId $userId -ResourceId $powerBiServicePrincipalId -Scope ($scopes -join " ")
    
  • 批量处理的话,只需循环遍历用户列表,重复执行上述授权命令即可。

3. 在应用登录流程中提前请求权限

你可以把权限范围直接嵌入React应用的登录请求里,让用户在登录时一次性完成权限同意,避免后续访问Power BI内容时再触发授权弹窗。以MSAL.js为例:

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
  auth: {
    clientId: "your-app-client-id",
    authority: "https://login.microsoftonline.com/your-tenant-id",
  }
};

const pca = new PublicClientApplication(msalConfig);

// 把所有需要的权限包含在登录请求中
const loginRequest = {
  scopes: ["User.Read", "Capacity.Read.All", "Capacity.ReadWrite.All", "Content.Create.All", "Dashboard.Read.All", "Dashboard.ReadWrite.All", "Dataset.ReadWrite.All", "Group.Read", "Report.ReadWrite.All", "Workspace.Read.All", "Workspace.ReadWrite.All"]
};

pca.loginPopup(loginRequest)
  .then(response => {
    // 登录&授权成功,处理后续逻辑
  })
  .catch(error => {
    // 处理登录或授权错误
  });

关键注意事项

  • 务必确认所有权限的「需要管理员同意?」状态为「否」:可以在Azure门户的应用注册>API权限页面查看,这是上述方法可行的前提。
  • 如果有任何权限需要管理员同意,那必须联系租户管理员完成「授予管理员同意」——这是AAD v2.0的安全设计,没有绕过途径。

内容的提问来源于stack exchange,提问作者C. Fabiani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:34:11