我们正在构建一个托管应用程序,该应用程序使用 MS SQL Server Analysis Services 2005 进行一些报告,特别是 OLAP 多维数据集浏览。由于它旨在供非常大型的全球组织使用,因此安全性很重要。
微软浏览 OLAP 多维数据集的首选客户端工具似乎是 Excel 2007,整个基础架构都围绕 Windows 集成身份验证。但是,我们正在尝试构建面向 Internet 的 Web 应用程序,并且不想为每个用户创建 Windows 帐户。
似乎也没有很多不错的基于 AJAXy Web 的 OLAP 多维数据集浏览工具(快速、拖放维度、支持动作、跨浏览器等)。顺便说一句,我们目前正在使用Dundas OLAP Grid但也考虑过 RadarCube和其他更昂贵的商业解决方案,并且仍在考虑采用CellSetGrid并进一步开发它 - 如果您知道任何其他廉价/开放的解决方案,请告诉我!
因此,我们计划提供两种访问多维数据集数据的模式:
- 通过我们自己的 Web 应用程序,使用这些第 3 方基于 Web 的 OLAP 浏览工具之一。
- 通过 msmdpump.dll 数据泵通过 HTTPS 从 Excel 直接访问,适用于当 Web 版本太慢/笨拙或用户需要更强大的分析时。
对于 Web 应用程序访问,与 SSAS 数据源的连接发生在 Web 服务器上,因此我们可以愉快地在连接字符串上传递一个 CustomData 项,该项指示正在连接的用户。由于我们可能拥有太多的权限组合来为其创建单独的 SSAS 角色,因此我们实现了动态维度安全性,该安全性使用“多维数据集用户”维度与连接字符串中的 CustomData 项并限制各种其他维度成员的允许集相应地(通过与包含“权限映射”的度量组的其他多对多维度关系)
参见 Mosha 关于 Dimension Security: http ://www.sqljunkies.com/WebLog/mosha/archive/2004/12/16/5605.aspx
到目前为止,这一切似乎都运行良好。
对于来自 Excel 的“直接连接”,我们为 HTTP 访问设置了数据泵(请参阅MS Technet 文章),但启用了匿名访问,再次依赖连接字符串来控制访问,因为我们没有 Windows 帐户。但是,在这种情况下,连接字符串由用户控制(我们从 Web 应用程序推送一个 .odc 文件,但好奇的用户可以查看和更改它),因此我们不能依赖用户良好并保留 CustomData =grunt@corp.org 从更改为 CustomData=superuser@corp.org。事实证明,这也会导致与角色相同的问题,因为如果您不使用 Windows 集成身份验证,这些也会在连接字符串中指定。
因此,问题归结为:有没有一种方法可以在没有 Windows 帐户的情况下在 IIS 中获得基本身份验证,从而可以与 SSAS 数据泵一起使用,让 SSAS 知道哪个用户正在连接,以便动态维度安全性可以能成功使用吗?
(这是我在 StackOverflow 上的第一个问题,可能是我问过的最复杂的问题:让我知道我没有很好地解释自己的地方,我会尝试澄清)