Power BI嵌入令牌生成失败:用户未授权问题咨询
Power BI Embedded 嵌入问题解答
问题1:报表数据集所在工作区未关联Power BI Embedded容量是否有影响?是否需将数据集发布至Embedded容量?
有直接影响,且必须将数据集所在工作区关联到Power BI Embedded容量。
- 嵌入报表时,报表及其依赖的数据集都需要运行在Embedded容量上,否则Service Principal无法获取足够权限生成嵌入令牌。
- 即使给了数据集所在独立工作区的Contributor权限,由于该工作区未关联容量,会导致令牌生成时出现授权错误。
- 解决方式:将数据集移动到已关联Embedded容量的报表所在工作区,或者将数据集所在的独立工作区关联到同一Embedded容量。
问题2:数据集无RLS角色是否意味着请求无需身份信息?如何无需指定用户身份且无需用户登录即可嵌入报表?
即使无RLS,生成嵌入令牌时仍需指定身份信息。要实现无需用户登录的嵌入,需采用App Owns Data模式:
- 调用
Reports - GenerateTokenInGroupAPI时,在请求体中设置identity字段为{"type": "App"},以Service Principal的身份生成令牌,无需传递终端用户信息。 - 这种模式下,报表会以Service Principal的权限展示数据(无RLS则显示全部数据),终端用户无需登录Power BI即可查看嵌入的报表。
问题3:成功嵌入报表还缺少哪些步骤?
结合你的当前配置,还需完成以下步骤:
- 统一工作区与容量关联:确保报表和数据集处于同一个关联了Embedded容量的工作区,且Service Principal对该工作区拥有至少Member及以上权限(推荐Workspace Admin,避免权限遗漏)。
- 修正GenerateToken API请求体:
- 必须包含
datasetId(报表绑定的数据集ID) - 设置
identity为{"type": "App"} - 指定
accessLevel为"View"
示例请求体:
{ "accessLevel": "View", "datasetId": "<你的数据集ID>", "identity": { "type": "App" } } - 必须包含
- 验证权限与容量配置:
- 确认Service Principal在目标工作区的权限已生效
- 检查工作区的容量分配状态,确保已正确关联到你的Embedded容量
- 核对API参数:确保调用API时使用的
workspaceId是报表所在的容量关联工作区ID,而非数据集原工作区ID(若已移动数据集)
内容的提问来源于stack exchange,提问作者Jazza
相关产品推荐
相关产品推荐

