在安全门户或网站中嵌入报表
借助 Power BI 报表的“嵌入”选项,你可以轻松、安全地在内部 Web 门户中嵌入报表。 这些门户可以是基于云的,也可以是本地托管的,例如 SharePoint 2019 。 嵌入的报表通过行级别安全性 (RLS) 和 Analysis Services 表格模型对象级安全性 (OLS) 来遵循所有项权限和数据安全性。 它们在任何接受 URL 或 iframe 的门户中提供无代码嵌入。
“嵌入”选项支持 URL 筛选器和 URL 设置。 它可以使用只需要基本 HTML 和 JavaScript 知识的低代码方法来与门户集成。
重要
由于正在进行 Chromium 安全更新,因此“嵌入”选项不再像以前那样工作,并且可能会要求用户多次进行身份验证。 要解决此问题,请考虑创建自己的 Power BI Embedded 解决方案。
如何将 Power BI 报表嵌入门户
在 Power BI 服务中打开报表。
在“文件”菜单上,选择“嵌入报表”>“网站或门户”。
在显示的“安全嵌入代码”对话框中,选择“下面是可用于嵌入此内容的链接”下面的值。 或者,如果要在博客或网站中使用 iframe,请选择“可以粘贴到网站的 HTML”下的值。
无论用户是直接打开报表 URL,还是打开嵌入在 Web 门户中的报表 URL,都需要进行身份验证才能访问报表。 如果用户未在其浏览器会话中登录 Power BI,将会显示以下屏幕。 当用户选择“登录”时,应会打开新的浏览器窗口或选项卡。 如果未提示用户进行登录,请让他们检查是否启用了弹出窗口阻止程序。
用户登录后,将打开报表,其中显示了数据并允许进行页面导航和筛选器设置。 只有拥有查看权限的用户才能在 Power BI 中查看报表。 此外,还应用了所有行级别安全性 (RLS) 规则。 用户需要获得正确的许可。 他们需要 Power BI Pro 或 Premium Per User (PPU) 许可证,或者内容需要位于 Power BI 高级容量的工作区中。 用户每次打开新的浏览器窗口时都需要登录。 不过,在他们登录后,其他报表会自动加载。
使用 iframe 时,可能需要编辑“高度”和“宽度”值,使其适合门户网页。
<iframe width="1080" height="760" src="https://app.powerbi.com/reportEmbed?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&autoAuth=true" frameborder="0" allowFullScreen="true"></iframe>
授予报表访问权限
“嵌入”选项不会自动允许用户查看报表。 查看权限在 Power BI 服务中设置。
在 Power BI 服务中,你可以与需要访问权限的用户共享嵌入的报表。 如果使用 Microsoft 365 组,你可以将该用户列为工作区成员。
许可
要查看嵌入的报表,你需要具有 Power BI Pro 或 Premium Per User (PPU) 许可证。 或该内容需要位于处于 Power BI Premium 容量(EM 或 P SKU)范围内的工作区中。
使用 URL 设置自定义嵌入体验
你可以使用嵌入 URL 的输入设置来自定义用户体验。 在提供的 iframe 中,可以更新 URL 的 src 设置。
属性 | 说明 |
---|---|
pageName | 你可以使用 pageName 查询字符串参数来设置要打开的报表页面。 在 Power BI 服务中查看报表时,你可以在报表 URL 的末尾找到此值,如本文后面所示。 |
URL 筛选器 | 你可以在从 Power BI UI 接收到的嵌入 URL 中使用 URL 筛选器来筛选嵌入的内容。 借助这种方式,可以通过基本 HTML 和 JavaScript 体验生成低代码集成。 |
为嵌入的报表设置要打开的页面
在 Power BI 服务中查看报表时,你可以在报表 URL 的末尾处找到 pageName 值。
从 Web 浏览器中的 Power BI 服务打开报表,然后复制地址栏中的 URL。
https://app.powerbi.com/groups/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/reports/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/ReportSection2
将 pageName 属性及其值追加到 URL 的末尾处。
https://app.powerbi.com/reportEmbed?reportId=/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&autoAuth=true&pageName=ReportSection2
使用 URL 筛选器筛选报表内容
你可以使用 URL 筛选器来提供不同的报表视图。 例如,下面的 URL 筛选报表,以显示能源行业的数据。
将 pageName 和 URL 筛选器结合使用的功能非常强大。 可以使用基本 HTML 和 JavaScript 生成体验。
例如,可以将以下按钮添加到 HTML 页面:
<button class="textLarge" onclick='show("ReportSection", "Energy");' style="display: inline-block;">Show Energy</button>
选择此按钮时,此按钮会调用一个函数,以使用更新的 URL 来更新 iframe,其中包含能源行业筛选器。
function show(pageName, filterValue)
{
var newUrl = baseUrl + "&pageName=" + pageName;
if(null != filterValue && "" != filterValue)
{
newUrl += "&$filter=Industries/Industry eq '" + filterValue + "'";
}
//Assumes there's an iFrame on the page with id="iFrame"
var report = document.getElementById("iFrame")
report.src = newUrl;
}
https://app.powerbi.com/reportEmbed?reportId=/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&autoAuth=true&pageName=ReportSection&filter=Industries/Industry eq 'Energy'
可以根据需要添加任意数量的按钮,以创建低代码自定义体验。
注意事项和限制
安全嵌入方案支持分页报表,并且还支持带有 URL 参数的分页报表。 有关详细信息,请参阅在 Power BI 中将报表参数传入分页报表 URL。
安全嵌入选项适用于发布到 Power BI 服务的报表。
若要托管安全嵌入的内容,用户必须使用 HTTPS 作为其顶级页面。 不支持使用不安全的主机页访问安全嵌入的内容。
用户每次打开新的浏览器窗口或选项卡时都需要登录才能查看报表。
若要进行身份验证,用户需要启用弹出窗口。
如果用户过去已成功访问过报表,但现在遇到问题,则应清除其浏览器缓存。
某些浏览器要求用户在登录后刷新页面,尤其是在使用 InPrivate 或 Incognito 模式的情况下。
如果使用不受支持的浏览器版本,可能会遇到问题。 有关 Power BI 支持的浏览器的列表,请参阅 Power BI 支持的浏览器。
如果网站将 Cross-Origin-Opener-Policy (COOP) 标头设置为“同源”,则无法登录以查看嵌入的内容,因为 MSAL 不支持此标头。 请改为选择“restrict-properties”(适用于基于 Chromium 的浏览器)或“same-origin-allow-popups”。或者,如果无法更改 Cross-Origin-Opener-Policy,请直接链接到嵌入的 URL,而不是将其嵌入到 iframe 中。
经典 SharePoint Server 不受支持,因为它需要 11 之前的 Internet Explorer 版本或启用“兼容性视图”模式。
要实现单一登录体验,请使用“在 SharePoint Online 中嵌入”选项,或使用用户拥有数据嵌入方法生成自定义集成。
随“嵌入”选项提供的自动身份验证功能不适用于 Power BI JavaScript API。 从版本 2.10.4 开始,PBI 嵌入式客户端 SDK 中会阻止它们。 对于 Power BI JavaScript API,请使用用户拥有数据嵌入方法。
当自动身份验证功能嵌入到应用程序(包括移动和桌面应用程序)中时,它们不起作用。
身份验证令牌生存期基于 Microsoft Entra 设置进行控制。 当身份验证令牌过期时,用户需要重新登录以获取更新的身份验证令牌。 默认生存期为一小时,但你的组织可能设置更短或更长的时间。 在这种情况下,无法自动刷新令牌。