这是对Reporting Services Authentication advice sought的扩展,因为我无法在该线程上提交冗长的帖子(歉意admin)。
基本上,我将报表服务的本地安装配置为使用Windows身份验证(最终目的是在网络上实现此身份验证)。
我当前的设置:
IIS(5.1):我创建了一个使用ASP.NET v2.0.50727的名为“ReportServer”的应用程序。该应用程序的安全性设置为“集成Windows身份验证”。我没有选中“匿名访问”复选框。我是否正确地假设这将仅阻止匿名访问IIS(即IIS中的ReportServer应用程序?)。因此,系统将提示用户输入登录详细信息,然后针对Windows/AD进行验证?
报告:我创建了一个共享的数据源,数据库驻留在其他服务器上,并将该数据源配置为使用“Windows身份验证”(不是SQL Server身份验证),并且可以成功测试连接。我还可以通过在BIDS中运行报表来成功创建和测试简单报表。
部署报告时,不会提示我登录(很好)。我相信这是由于IIS中的应用程序目录配置为使用“集成的Windows身份验证”,而后者使用的是登录的PC用户帐户(对吗?)。
每当我通过浏览器加载报告服务时,都会正确提示我输入Windows域的用户名和密码,但仅当我从本地PC运行报告时才提示我。通过身份验证后,我可以看到所有适用于我的报告。如果某位同事尝试连接到我的PC上的报表实例,则允许他登录而无需登录!为什么是这样?!
但是,当我通过浏览器运行部署的报表时,收到错误消息“在报表处理期间发生错误。无法创建与数据源的连接。用户'(null)'的登录失败。原因:与受信任的用户无关SQL Server连接。”如果我更改数据源以使其使用SQL Server身份验证,并且指定了SQL Server中存在的登录名,则该报告可以在浏览器中成功运行。
我要实现的理想解决方案如下:
我感觉好像快要到了,即与报表服务器的连接正在提示用户输入其Windows凭据,然后再允许他们访问报表服务器。
请有人告诉我:
a)为什么通过本地浏览器访问报表时提示输入Windows登录,但是当其他Windows用户通过浏览器窗口远程访问报表服务器时却没有提示登录?
b)如果应该实现更好的整体解决方案,请您提出建议或向我指出相关资源。
c)我当前的设置有什么需要注意的地方,将来可能会引起问题。
提前谢谢了。
联合部队
最佳答案
有2个安全方面需要处理
访问报告的用户的
通常,我们发现我们想将未经授权的用户踢出第1点,然后(假设用户已被授权)为数据源提供一组静态连接凭据-这样做的好处包括允许连接池和确定哪些用户可以访问哪些数据库,运行哪些报表SPROC等,这使我们的DBA头疼不已,因为他们只需要为“报表数据源用户”进行配置。
点#1由添加到报告/文件夹中的组/用户控制。
通过为您的数据源设置域凭据,然后为该用户分配对其需要访问的各种数据库的适当读取/执行访问权限,可以完成第二点。
可能您可能会遗漏的一点是,数据源凭据是否需要“本地登录”权限才能运行?
FWIW我们对数据源的设置如下:
运行您的帐户