powerbi-embedded - 如何从本地 SSAS 读取/访问 Power Bi Embedded Report 查询字符串参数?
问题描述
我们正在尝试为 SSAS 找到一种访问查询字符串参数的方法。我知道过滤器参数,它有很多文档,但我们需要传递一个自定义参数 - 一个 sessioncookie - 所以而不是
- ?filter=Store/Territory 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,但尚未成功。
谁能指出我们如何解决它的正确方向?
显然,如果微软通过向 powerbi.com 添加 IP 过滤来解决这种单点或妥协,或者实施真正的 2 因素 b2b 解决方案,那将是非常棒的,但我不确定我们是否可以等待这种情况发生 :)
解决方案
您可以使用 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 });`
推荐阅读
- python - 在 Python 的 re.compile 中加入特殊字符
- git - 如何在对 vps 服务器执行 git push/pull 时禁用询问密码?
- filenames - ImageFileError:无法计算出“.nii”的文件类型
- c++ - 为什么这个while循环条件保持真实?
- node.js - 在 npm install 上出现错误,因为 npm ERR cb() 从未调用过
- amazon-s3 - AWS Glue 作业错误:调用 o82.parquet 时出错。未找到
- ruby-on-rails - 如何在 Rails 的数据表中显示名称而不是 user_id
- html - asp.net 下拉列表未从新创建的 html 下拉列表中更新
- curl - 使用 cURL 命令时出现 URL 问题
- sql - 使用新的子分区模板在 Oracle 中拆分 maxvalue 分区