AD认证的集成模式

AD(或者Windows)认证是PBI的默认认证方式。在这种方式下,需要第三方应用也采用了AD的认证方式才可以正常的和PBI RS做集成。注意,这种方式要求第三方系统采用了AD的认证方式,并且用户在使用AD账户登录了操作系统,才能正常的不用输入登录用户名和密码去访问PBI RS或第三方系统。不用登陆的原因是用户在登陆操作系统时,已经输入了用户名和密码经过了AD的认证。这里不做第三方系统和AD集成的探讨,如果有需求,请参考微软官方的文档。

在第三方系统做好了AD的集成后,与PBI RS的集成,官方给出了通过URL的方式在第三方做iframe的嵌入。即通过将报表的地址,然后增加后缀 ?rs:embed=true的方式来实现集成。如果在浏览器直接输入,其对比效果如下:

访问/reports/powerbi/test/RLS?rs:embed=true的效果,只有报表区域。

访问/reports/powerbi/test/RLS的效果,包含了PBI RS的一些固有元素。

如果你还想在URL里传入参数,控制PBI报表的显示内容,还可以通过这样的参数组合来实现:reports/powerbi/[report_path]?rs:Embed=true&filter=[table_name]/[column_name or measure_name] eq 'value' [and [table_name]/[column_name or measure_name] eq 'value']

【对自定义制作报表场景有硬需求的用户一定要注意这段】

在AD认证模式下,用户使用PBI Desktop(本地版本)编辑完报表后,可以直接另存到PBI RS上。因为运行PBI Desktop的账户是AD账户,因此PBI Desktop和PBI RS之间是有认证关系的。那如果用户在非域的windows上访问系统并且编辑报表,然后也想将报表直接另存到PBI RS上怎么办?一个解决方案是,使用runas命令(runas /netonly /user:username "exefilepath")。有需求的童鞋可以查一下这个命令的用法,然后给这类用户一个bat批处理文件(或其他形式的可以使用runas命令或类似命令的交付物),用bat文件来代替原来的pbi desktop的启用方式。

此外,如果对安全性要求不是很高,用户也可以通过js里的xmlhttprequet对象,使用get方法将用户名和密码传递给PBI RS然后再请求iframe中的报表地址。这种方式需要注意两点,第一是用户名和密码实际是明文get请求到PBI RS的;第二需要考虑不同浏览器对脚本的支持情况。

很多时候,用户的环境不是纯AD的环境,或者使用了其他的SSO方案,这时候怎么做呢?我们可以使用PBI RS的Form认证方式。

在AD认证中的权限控制

PBI RS中如果想实现不同用户访问同一张报表时,看到的数据只能是这个用户权限范围之内的数据,则需要通过结合SSAS(SQL Server Analysis Service)来实现。具体步骤如下:

  1. 在AD中创建user1和user2。

  2. 使用SSDT(SQL Server Data Tools,请通过搜索引擎从微软官网下载),创建一个SSAS的tabular模型,然后部署到SSAS中。具体操作步骤,请参考官方教程:https://docs.microsoft.com/zh-cn/sql/analysis-services/tutorial-tabular-1400/as-adventure-works-tutorial?view=sql-analysis-services-2017,教程内容比较丰富,如果仅需要快速了解权限相关,请直接跳转到教程列表的“补充课程-动态安全性”部分。这个步骤的重点是,在模型中额外创建user1和user2对应的数据权限映射表,然后在这个权限映射表中,使用USERNAME()函数来做过滤。

  3. 使用PBI Desktop直连(Direct Query而非Import)到SSAS中对应的模型,制作报表,然后将报表发布到PBIRS。

  4. user1和user2在PBI RS中都被管理员授予报表的浏览权限。

  5. 使用user1和user2在访问这张报表时,数据会按不同的用户做对应的呈现。

有些时候,用户可能会遇到下面的错误:

一般这种情况是由于服务器采用了k8s认证模式,而服务器却没有做好对应的配置,遇到这种情况,请参考: https://docs.microsoft.com/zh-cn/power-bi/report-server/configure-kerberos-powerbi-reports

Form认证的集成模式

PBI RS本身是一个.Net Web应用,实现其Form认证和.Net Web程序的Form认证基本原理一样。PBI RS提供了接口让用户可以实现自定义的Form认证。所谓的自定义就是,你可以选择实现你希望的PBI RS认证逻辑,是通过账号密码,还是SSO服务器的某种标准(比如SAML),只要用户在PBIRS的扩展模块实现了IAuthenticationExtension2接口。微软给出了示例代码,并放到了github上。示例代码下载地址:https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample。完成Form认证的设置需要的步骤比较多,而且需要比较多的.net web相关知识,为了让大家可以更快上手,微软在github上的示例代码的最近更新中,添加了一个powershell脚本,可以实现一键部署,方便了大家体验Form认证。

在Form认证模式下,第三方系统可以非常方便的和PBI RS做集成。比较推荐的方式还是使用官方介绍的embed的URL方式。但是在Form认证下,目前存在一个问题是,PBI Destkop在制作完报表后,无法直接另存到PBI RS中。用户尝试在另存为的时候 ,会得到服务器返回的一个错误。目前这个错误是由于PBI Desktop在当前版本还不支持Form认证,根据PBI社区的信息,产品组已经在制作相关的功能,下个版本可能会解决。目前的一个解决办法是,用户编辑完pbix报表后,不要另存为,而是选择先存到本地,然后再登陆到PBI RS,利用上传功能,将pbix文件上传到PBI RS上。这种模式下,为了安全性考虑,上传的pbix的数据源连接的信息会丢失(如果不丢失就需要PBIRS保存用户指定的数据源的用户名和密码,这点会有比较大的安全隐患),需要用户在PBI RS站点上再编辑一下上传的pbi报表的数据源信息,pbi报表才可以正常显示。而每次上传报表后还要再次做一次数据源的编辑对用户来说,操作过于繁琐。因此,我们可以做一个简单的页面,这个页面使用PBI RS提供的RESTAPI来实现pbix文件的上传,在上传完毕后,调用相关RESTAPI,将这个报表的数据源信息自动重写。关于RESTAPI的功能,不在这里详述了,有兴趣的童鞋可以去PBI官网的文档中查看更多信息。

在Form认证中的权限控制

在Form认证中,PBI RS的用户不再是AD用户,而SSAS不支持非AD用户(或windows用户)之外的认证方式。这种情况下怎么控制不同用户的数据权限呢?答案是,还是通过SSAS来完成。具体思路如下:

  1. 在PBI RS里创建user1和user2

  2. 使用SSDT创建SSAS模型,然后发布到SSAS,注意,在创建模型时,依然需要一张用户和数据权限的映射表。此时暂时先不处理权限的映射。

  3. 使用PBI Desktop通过直连的方式直连到SSAS,然后创建报表,并将pbix文件上传到PBI RS上。

  4. 在PBI RS上编辑这张报表的数据源成以下格式:

    Data Source=[server name or server ip];Initial Catalog=[model name];customdata={{UserID}}

    注意,红色部分是核心。customdata是SSAS的连接字符串的扩展参数;{{userid}}是PBI RS的内置通配符,会将这个通配符的值替换成当前PBI RS登陆用户,然后传递给SSAS。

  5. 同时报表数据源的凭据使用Windows,但是要指定账户,并且要勾选使用当前凭据,模拟用户访问报表单选框。

  6. 在SSAS中,增加一个角色,在这个角色的数据过滤条件中,输入类似于下面的格式的公式:

    =Mapping_table[username]=CUSTOMDATA()

  7. 使用user1和user2登陆报表,查看到这张报表的数据已经根据用户做了过滤。

PowerBI Report Server 集成,自定义身份验证,数据权限控制相关推荐

  1. PowerBI Report Server 自定义视图无法显示故障解决

    PowerBI Report Server 自定义视图无法显示故障解决 很久不写blog,搞开源,搞AKS,K8S .但是最近出现了PBI故障,研究一番,记录下情况,为大家某个福利. 如下图,红线内, ...

  2. ISA server的常见身份验证方式

    ISA 2006的几种常用验证方式: 1. 基本验证: 此验证方式不会被加密,只是以明文的方式来传递信息,不安全.如果在"网络"的"内部"属性中将"域 ...

  3. SQL Server 数据库之身份验证和访问控制

    身份验证和访问控制 1. 身份验证模式 1.1 Window 身份验证模式 1.2 混合身份验证模式 2. 管理登录名 2.1 创建 Windows 登录名 2.2 创建 SQL Server 登录名 ...

  4. 微软SQL服务器登录,Microsoft SQL Server 【Windows 身份验证】和 【sa】都无法登录的解决方案...

    1.修改启动参数:打开[SQL Server 配置管理器(SQL Server Configuration Manager)]→右键[SQL Server(MSSQLSERVER)]属性→高级(Adv ...

  5. 134_Power BI Report Server之某消费品运营数据监控

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一背景 最近很久都没有更新文章了,研究了下Power BI Report Server(下文简称pbirs). 今天把pb ...

  6. 万众期待的PowerBI Report Server与PowerBI Premium

     2017年5月3日,微软宣布了发布了PowerBI的重要更新,其中最重要的事情是发布了:Power BI Premium Power BIPremium是为专有客户提供的高性能的独享PowerB ...

  7. 怎样更改SQL Server 2008的身份验证方式

    大家都知道sql server 有两种登录验证方式,即sql server验证方式和windows验证方式,但是sql server默认的是windows登录验证方式,我们如何启用sql server ...

  8. 如何更改SQL Server 2005的身份验证模式

    安装MS SQL Server 2005时,缺省为Windows身份验证模式,刚开始不知道怎么修改为SQL Server和Windows混合身份验证模式,只好重装,然后选择为混合模式,后来发现,原来装 ...

  9. SQL Server 2005的身份验证模式修改步骤

    安装MS SQL Server 2005时,缺省为Windows身份验证模式,刚开始不知道怎么修改为SQL Server和Windows混合身份验证模式,只好重装,然后选择为混合模式,后来发现,原来装 ...

最新文章

  1. link-time version is older than compile-time version
  2. 可简单图化算法(Havel算法)
  3. 大学计算机等级培训卷子,大学计算机期中考试试卷示例.doc
  4. JavaScript 创建类/对象的几种方式
  5. 泰康人寿信息化三大核心战略:移动优先、数据驱动和云计算
  6. arch linux arm下载_linux系统下编译给android JNI调用的Gmssl库
  7. 深入理解PHP之foreach
  8. STL中map与hash_map容器的选择
  9. html5均线图源码,通达信导航家之成本均线主图指标 源码(图文)
  10. luogu P2706 巧克力
  11. 组装计算机主机算固定资产吗,​购买电脑配件组装电脑属于固定资产吗
  12. css动画效果制作正方体旋转相册
  13. MaaS一体化绿色出行服务,实现城市交通出行碳中和
  14. 武汉关谷职业学院计算机中心,武汉光谷职业学院2021年宿舍条件
  15. Vue安装element ui踩坑
  16. poj1125Stockbroker Grapevine(最短路floyd)
  17. 中行安全控件可致 Win8 笔记本键盘失灵
  18. Knight On the Chessboard
  19. 中国人工晶状体行业运行态势分析及发展战略规划建议报告2022-2028年版
  20. 基于PHP+MySQL的家居装修主题网站

热门文章

  1. 【笔记篇】11仓管系统WCS系统——之《实战供应链》
  2. 超级签名 免签封装 安卓打包 企业签名 超级签名MDM 企业签名MDM 自助分发多合一系统 搭建说明
  3. HDU 5246 超级赛亚ACMer 【贪心】【STL版本二分】
  4. JIT准时生产制造管理
  5. 小学英语之拯救小学生 V1.0 冠词用法
  6. Aizu - 2224
  7. 电磁阀怎么使用 电磁阀的要求有哪些
  8. 2016微软校招笔试题
  9. 工作以后如何做读书笔记
  10. 都不知道是不是resnet原始结构,keras实现....