Power BI 嵌入令牌生成 - 用户未经授权

问题描述 投票:0回答:1

我正在与一位客户合作,他希望将 Power BI 报告嵌入到其外部托管的电子商务网站中。这个想法是,该报告将向用户显示他们迄今为止花费了多少,以及一些其他指标。该报告将根据用户的身份过滤报告内容,并且不应要求用户登录 Power BI。

我已设置 Power BI Embedded 容量,并遵循此处概述的步骤:https://learn.microsoft.com/en-us/power-bi/developer/embedded/embed-service-principal 和此处: https://learn.microsoft.com/en-us/power-bi/developer/embedded/embed-sample-for-customers?tabs=net-core

到目前为止,我已经创建了服务主体并授予了以下 Power BI API 权限:enter image description here

在 Power BI 中,我启用了允许服务主体调用 REST API 的设置,此外还启用了允许访问管理 API 的设置:enter image description here

服务主体位于一个安全组中,该安全组对与 PBI 嵌入式容量关联的工作区具有管理员访问权限,并且在该工作区中,我们发布了一份不包含任何行级安全要求的虚拟报告 - 这个想法是,如果我们可以成功嵌入此报告,然后我们将尝试使用包含 RLS 的报告。

报表的数据集位于单独的工作区中,该工作区不在 Power BI Embedded 容量中。但我也已授予服务主要贡献者对该工作区的访问权限。

我们可以成功获取服务主体的承载令牌并调用一些 REST API 调用,例如获取工作区列表。但我们在生成将报告嵌入网络应用程序所需的令牌时遇到问题。

最初,当我们调用GenerateToken API 时,我们收到了HTTP401“PowerBINotAuthorizedException”。但是,在请求中包含数据集 ID 后,我现在收到 HTTP403“用户未授权”错误。

我们正在使用此处记录的“Reports -GenerateTokenInGroup”API 调用:https://learn.microsoft.com/en-us/rest/api/power-bi/embed-token/reports-generate-token-in -组

请求格式如下:

POST https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/reports/{reportId}/GenerateToken

我的问题是:

  1. 报表数据集位于不在 Power BI Embedded 容量上的工作区是否重要?如果是这样,我应该将数据集发布到嵌入式容量吗?
  2. 数据集当前不包含任何 RLS 角色这一事实是否意味着不需要请求的身份部分?如果是这样,如何在不指定用户身份且不需要用户登录的情况下嵌入报告?
  3. 我们缺少哪些步骤才能成功嵌入报告?

enter image description here

authentication powerbi powerbi-embedded
1个回答
0
投票

好的,我已经找到了这个问题的答案,事实是请求包含了不需要的身份,因为数据集和报告中没有任何行级安全性。如果我从请求中完全省略身份元素,我会得到一个有效的令牌。

请求正文:

{ "accessLevel": "View", "allowSaveAs": "false" }

回应:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.