首页 > 解决方案 > 如何从本地 SSAS 读取/访问 Power Bi Embedded Report 查询字符串参数?

问题描述

我们正在尝试为 SSAS 找到一种访问查询字符串参数的方法。我知道过滤器参数,它有很多文档,但我们需要传递一个自定义参数 - 一个 sessioncookie - 所以而不是

我们需要通过

这是实现 2 因素身份验证机制所必需的,因此窃取获取嵌入令牌所需凭据的人无法通过使用来自世界任何地方的这些凭据来破坏设置。

思路如下:

我们有一个本地网站(角度 + API)——现在基于 AppOwnsData 示例。当用户请求报告时,从 PowerBI.com 检索 embedtoken,然后生成一个生命周期较短的 sessioncookie,并将其存储在本地 MSSQL 数据库中。然后将此 sessioncookie 作为参数附加到报告 url。

用户现在被重定向到 powerbi.com 以获取报告。powerbi.com(利用嵌入式容量)将通过本地网关连接到本地 SSAS。SSAS 访问“sess”查询字符串参数并验证会话 cookie 内容是否与存储在 MSSQL 表中的会话 cookie 相匹配,并且该 cookie 的生命周期尚未过期。

我们找不到任何有关如何执行此操作的文档。我们尝试将其作为 EffectiveIdentity 的一部分传递并尝试使用 CustomData,但尚未成功。

谁能指出我们如何解决它的正确方向?

显然,如果微软通过向 powerbi.com 添加 IP 过滤来解决这种单点或妥协,或者实施真正的 2 因素 b2b 解决方案,那将是非常棒的,但我不确定我们是否可以等待这种情况发生 :)

标签: powerbi-embedded

解决方案


您可以使用 CustomData 传递您的 sessioncookie。本文很好地解释了如何实施 CustomData http://www.businessintelligenceinfo.com/business-intelligence/self-service-bi/using-customdata-and-ssas-with-power-bi-embedded

// Generate Embed Token for reports without effective identities.
var rls = new EffectiveIdentity("xxxAzureUserName", new List<string> { report.DatasetId }, new List<string>() { "SessionCookie" }, "CookieValue");

generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", identities: new List<EffectiveIdentity> { rls });`

推荐阅读