我想与没有 Microsoft/PowerBI 帐户的用户共享一些 PowerBi 仪表板。 我知道我可以在 Sharepoint 在线共享它,但此解决方案的问题是我们可以在网页按钮上找到的共享按钮(Facebook、Twitter、URL)。我不希望用户能够自己共享报告。那么有没有一种方法可以与免费用户分享报告,而不允许他们分享回来。
谢谢你的帮助。
做到这一点的唯一方法是将报告/仪表板嵌入您的应用程序(例如 Web 应用程序)并使用自定义身份验证限制访问。有关详细信息,请参阅官方文档教程:将 Power BI 内容嵌入到您的客户的应用程序中。
首先你要知道嵌入Power BI有两种模式——
user owns data
和app owns data
。对于第一种模式,在嵌入时,用户将使用自己的 Power BI Pro 帐户对自己进行身份验证,即您的每个用户都需要 Power BI Pro 许可证。使用后者,您只需要一个“主帐户”,它将用于身份验证。在你的情况下你需要app owns data
.
基本上你需要做以下事情:
注册应用程序 - 转到 dev.powerbi.com/apps 并注册应用程序。选择授予它的权限(如果您不确定,对于您的第一个测试,只需授予它们所有权限)。复制 guid - 这是应用程序 ID,也就是客户端 ID。
下一步是从您的应用程序进行身份验证并获取访问令牌。为此使用 Azure Active Directory 身份验证库 (ADAL) - 调用
acquireToken
类的一些 AuthenticationContext
方法。使用此访问令牌调用 Power BI REST API 并获取要嵌入的元素的
embedUrl
,例如报告.使用 Power BI JavaScript 客户端 实际嵌入此元素。您需要初始化一个 embed 配置类 并传递有关元素类型(报告、仪表板、磁贴)、在哪里找到它(embedUrl)、身份验证(访问令牌)、一些其他配置选项(显示或隐藏过滤器窗格、导航)的信息等),要应用的过滤器等。如果您将使用上面获取的访问令牌,请将
tokenType
设置为 AAD
。此令牌具有许多特权,因此出于安全原因,您可能希望改用Embed
令牌。在这种情况下,使用访问令牌再次调用 REST API(例如Reports GenerateTokenInGroup)。调用 JavaScript 客户端的
powerbi.embed
方法传递嵌入式配置以在您的应用程序中可视化此 Power BI 元素。最简单的选择是通过 Azure Marketplace 或 Appsource 下载和部署安全共享应用程序。推荐 Binokula Instant 应用程序门户,它允许您安全地与没有 Power BI 许可证的已批准用户共享;通过 Microsoft AppSource 或 Azure Marketplace.