首页 > 代码库 > [原创]跨域授权访问SSAS
[原创]跨域授权访问SSAS
SSAS的权限控制是基于Role进行,而Role的成员只能是windows用户或域用户,不像SQL Server可以创建db级别的用户,如果你是以Excel作为OLAP客户端的话麻烦就来了,部署SSAS的服务器多数情况下是和客户端PC不在同一个域环境的,防火墙又不方便做domain trust,由此衍生的主流解决方案如下:
1. http方式访问,如果配置的web服务器是匿名验证,就没有任何权限控制可言,所有访问客户端的权限都是一样的
2. netonly runas,原理是在excel进程创建之前就把credential信息写入startupinfo里,之后这个excel进程就可以登陆的用户身份访问SSAS,缺点是用户每次新建excel文件都需要进行一次登陆授权,而且在双击打开已有的excel report时会发现无法修改更新pivot table,因为此时的excel进程是没有登陆授权的,就用户体验而言真的是不胜其烦
3. 配置客户端windows用户密码和SSAS服务端用户密码一致,这个方案貌似完美的解决了以上方案的问题,可以完整的配置用户权限,终端用户无需每次都验证身份,然而实际生产环境还是会造成一些不必要的麻烦,例如客户端用户修改了密码,造成和服务端同名用户的密码不一致,那么访问权限也就被终止了
下面要介绍的是笔者在项目中用的解决方案,一个用vsto开发的excel插件,具备跨域登陆授权功能,后续还会逐步扩展集成一些在OLAP分析中非常有用的功能,有时间的话会开几个专题详述具体功能,此篇只讲跨域登陆授权
首先需要配置服务端开放2383端口给客户端访问(如果服务器安装了多个sql实例的话,可能你要配置的ssas服务端开放端口不是默认的2383),如下图所示在客户端验证端口访问正常
在服务端创建两个windows用户,并创建两个SSAS Role, 分别授权访问不同的Country
客户端我用的是excel2010,理论上兼容excel2013,以后有时间会做一些兼容性测试,安装的插件如下图(插件下载地址在文章最下面)
首先使用source config配置一个或多个cube数据源,并在上面的下拉框控件中选中当前数据源
然后点击new pivottable按钮,如果是第一次使用,会弹出登陆窗口,输入SSAS服务端的用户密码,支持windows用户和域用户
如果选中了Logon窗口下面的checkbox并确认登陆,那么这个登陆的身份将和PC绑定,无论什么时候打开excel都默认使用这个身份
登陆验证完后会以当前身份新建一个数据透视表,查看权限是否正常:
我们再点击X按钮切换登陆用户为test2,此时不选中绑定当前PC
确认登陆后数据自动刷新后的结果如下
保存Excel文件,再打开时会自动刷回test1身份的数据
现提供免费下载,地址如下:
http://pan.baidu.com/s/1c05urok
[原创]跨域授权访问SSAS