这是对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中存在的登录名,则该报告可以在浏览器中成功运行。

我要实现的理想解决方案如下:

  • 用户在浏览器中加载报表服务器URL。
  • 提示用户输入其Windows/AD凭据(包括域前缀)。
  • 在后台允许用户进入报表服务器。
  • 用户将只能看到报告文件夹和允许他/她查看的报告。这可以通过将允许的AD组/用户添加到报告文件夹和报告中来控制(我知道如何做到这一点)。我不需要维护单独的SQL Server用户帐户。

  • 我感觉好像快要到了,即与报表服务器的连接正在提示用户输入其Windows凭据,然后再允许他们访问报表服务器。

    请有人告诉我:

    a)为什么通过本地浏览器访问报表时提示输入Windows登录,但是当其他Windows用户通过浏览器窗口远程访问报表服务器时却没有提示登录?

    b)如果应该实现更好的整体解决方案,请您提出建议或向我指出相关资源。

    c)我当前的设置有什么需要注意的地方,将来可能会引起问题。

    提前谢谢了。

    联合部队

    最佳答案

    有2个安全方面需要处理

    访问报告的用户的

  • 身份验证
  • 访问数据库的数据源的身份验证

  • 通常,我们发现我们想将未经授权的用户踢出第1点,然后(假设用户已被授权)为数据源提供一组静态连接凭据-这样做的好处包括允许连接池和确定哪些用户可以访问哪些数据库,运行哪些报表SPROC等,这使我们的DBA头疼不已,因为他们只需要为“报表数据源用户”进行配置。

    点#1由添加到报告/文件夹中的组/用户控制。

    通过为您的数据源设置域凭据,然后为该用户分配对其需要访问的各种数据库的适当读取/执行访问权限,可以完成第二点。

    可能您可能会遗漏的一点是,数据源凭据是否需要“本地登录”权限才能运行?

    FWIW我们对数据源的设置如下:
  • 凭据安全存储在报表服务器中
  • 检查:连接到数据源
  • 时用作Windows凭据

    运行您的帐户

    10-05 20:54
    查看更多