为没有 PowerBi 帐户的用户共享仪表板和报告的方法,并且不允许将其共享回来

Met*_*or2 1 dashboard powerbi

我想与没有 Microsoft/PowerBI 帐户的用户共享一些 PowerBi 仪表板。我知道我可以在 Sharepoint 在线共享它,但此解决方案的问题在于我们可以在网页按钮上找到的共享按钮(Facebook、Twitter、URL)。我不希望用户能够自己共享报告。那么有没有一种方法可以与免费用户共享报告,而不允许他们将它们共享回来。

感谢您的帮助。

And*_*lov 5

执行此操作的唯一方法是将报告/仪表板嵌入您的应用程序(例如 Web 应用程序)并使用自定义身份验证限制访问。有关详细信息,请参阅官方文档教程:将 Power BI 内容嵌入客户的应用程序中

首先,您需要知道嵌入 Power BI 有两种模式 -user owns dataapp 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要嵌入的元素的 ,例如report

  • 使用Power BI JavaScript 客户端实际嵌入此元素。您需要初始化一个嵌入配置类并传递有关元素类型(报告、仪表板、磁贴)、在哪里可以找到它(embedUrl)、身份验证(访问令牌)、一些其他配置选项(显示或隐藏过滤器窗格、导航等)的信息.)、要应用的过滤器等。如果您将使用上面获得的访问令牌,请设置tokenTypeAAD。此令牌具有许多特权,因此出于安全原因,您可能希望改用Embed令牌。在这种情况下,使用访问令牌再次调用 REST API(例如Reports GenerateTokenInGroup)。

  • powerbi.embedJavaScript 客户端的调用方法传递嵌入式配置以在应用中可视化此 Power BI 元素。