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

获取带行级安全的Power BI报表嵌入令牌遇权限问题求助

Power BI嵌入令牌自定义用户名报错403解决方法

问题场景

调用Power BI API的GenerateToken端点(https://api.powerbi.com/v1.0/myorg/groups/*workspace_id*/reports/*report_id*/GenerateToken)生成带行级安全(RLS)的嵌入令牌时,请求体中自定义username字段会返回403错误,提示:

Creating embed token for accessing dataset dataset_id requires effective identity username to be identical to the caller's principal name

仅当username填写服务主体GUID时才能成功获取200响应的嵌入令牌。

解决步骤

1. 开启租户级服务主体嵌入权限

进入Power BI管理门户,按以下路径配置:

  • 导航到租户设置 > 嵌入内容和应用
  • 找到允许服务主体使用Power BI API代表用户生成嵌入令牌选项,设置为允许,并将你的服务主体加入允许列表(或选择允许整个组织)

2. 配置服务主体权限

  • 确保服务主体是目标工作区的成员或管理员
  • 确认服务主体对目标数据集拥有读取权限(可通过工作区权限分配,或直接在数据集权限中添加服务主体)

3. 检查数据集RLS配置

  • 确保数据集的RLS角色规则能匹配自定义的username(例如角色使用USERNAME()函数过滤数据行)
  • 若无需指定角色,也要确保RLS角色已正确发布,且服务主体有权限应用该角色

4. 调整请求体(按需)

如果需要绑定特定RLS角色,在roles数组中添加角色名称,示例请求体:

{
    "accessLevel": "View",
    "identities":
    [
        {
            "username": "自定义用户名",
            "roles": ["你的RLS角色名称"],
            "datasets": ["dataset_id"]
        }
    ]
}

注意事项

  • 自定义的username不需要对应实际存在的Power BI用户,只要RLS规则能识别即可
  • 确保应用通过服务主体正确获取初始访问令牌,且令牌包含Dataset.Read.All、Report.Read.All等必要权限

内容的提问来源于stack exchange,提问作者Jason Richmeier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:19