我正在与一位客户合作,他希望将 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 权限:
在 Power BI 中,我启用了允许服务主体调用 REST API 的设置,此外还启用了允许访问管理 API 的设置:
服务主体位于一个安全组中,该安全组对与 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
我的问题是: