如何从内部SSAS读取/访问Power Bi Embedded Report查询字符串参数?

时间:2019-07-09 15:11:45

标签: powerbi-embedded

我们正在尝试找到一种SSAS访问查询字符串参数的方法。我知道关于filter-parameter的信息,该文件有大量文档,但是我们需要传递一个自定义参数-sessioncookie-因此,不是

  • ?filter =存储/区域eq'NC'

我们需要通过

  • ?sess =

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

想法如下:

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

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

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

任何人都可以为我们指出解决问题的正确方向吗?

很明显,如果Microsoft通过在powerbi.com上添加IP过滤来解决这种单点或威胁的解决方案,或者实施真正的2因子b2b解决方案,那将是非常棒的,但是我不确定我们是否可以等到发生:)

1 个答案:

答案 0 :(得分:0)

您可以使用CustomData传递会话cookie。本文很好地说明了如何实现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 });`