sql-server - 使用 Reporting Services 实现 Windows 身份验证

标签 sql-server windows authentication iis reporting-services

这是帖子 Reporting Services Authentication advice sought 的扩展因为我无法在该线程上提交冗长的帖子(抱歉管理员)。

基本上,我将本地安装的报告服务配置为使用 Windows 身份验证(最终目的是在网络上实现此身份验证)。

我当前的设置:

IIS (5.1):我创建了一个名为“ReportServer”的应用程序,它使用 ASP.NET v2.0.50727。此应用程序的安全设置为“集成 Windows 身份验证”。我取消选中“匿名访问”复选框。我是否正确地假设这将阻止匿名访问 IIS(即 IIS 中的 ReportServer 应用程序?)。因此,系统会提示用户输入详细登录信息,这又会针对 windows/AD 进行验证?

报告:我创建了一个共享数据源,其中数据库驻留在不同的服务器上,并将数据源配置为使用“Windows 身份验证”(而非 SQL Server 身份验证),我可以成功测试连接。我还可以通过在 BIDS 中运行报告来成功创建和测试简单的报告。

当我部署报告时,系统不会提示我登录(这很好)。我认为这是因为 IIS 中的应用程序目录被配置为使用“集成 Windows 身份验证”,它使用登录的 PC 用户帐户(正确?)。

每当我通过浏览器加载报告服务时,系统都会正确提示我输入我的 Windows 域用户名和密码,但只有当我从我的本地 PC 运行报告时才会这样。通过身份验证后,我可以看到所有适用于我的报告。如果一位同事试图连接到我 PC 上的报告实例,他无需登录就允许了!!这是为什么?!

但是,当我通过浏览器运行已部署的报表时,我收到错误消息“报表处理期间发生错误。无法创建与数据源的连接。用户‘(null)’登录失败。原因:未关联使用受信任的 SQL Server 连接。”如果我更改数据源以使其使用 SQL Server 身份验证并且我指定了 SQL Server 中存在的登录名,则可以在浏览器中成功运行报告。

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

  1. 用户在浏览器中加载报表服务器 URL。
  2. 系统会提示用户输入其 Windows/AD 凭据(包括域前缀)。
  3. 在后台允许用户进入报表服务器。
  4. 用户将只能看到允许他/她看到的报告文件夹和报告。这将通过将允许的 AD 组/用户添加到报告文件夹和报告来控制(我知道该怎么做)。我不想维护单独的 SQL Server 用户帐户。

我觉得我快到了,即与报表服务器的连接提示用户在允许他们访问报表服务器之前输入他们的 Windows 凭据。

谁能告诉我:

a) 为什么当我在本地通过浏览器访问报表时系统提示我登录我的 Windows,而当其他 Windows 用户通过浏览器窗口远程访问我的报表服务器时却没有提示我登录?

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

c) 我当前的设置是否有任何需要注意的地方可能会在未来引起问题。

非常感谢。

日本国际机场

最佳答案

有两个安全方面需要处理

  1. 访问报告的用户身份验证
  2. 访问数据库的数据源的身份验证

通常,我们发现我们希望在第 1 点将未经授权的用户踢出,然后(假设该用户已获得授权)为数据源提供一组静态连接凭据 - 这具有诸如允许连接池并为我们的 DBA 省去了大量关于哪些用户可以访问哪些数据库、运行哪些报告 SPROC 等的麻烦,因为他们只需要为“报告数据源用户”进行配置。

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

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

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

FWW 我们对数据源的设置如下:

  • 安全地存储在报告服务器中的凭据
  • 检查:连接到数据源时用作 Windows 凭据

运行您的帐户

关于sql-server - 使用 Reporting Services 实现 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515133/

相关文章:

SQL显示 "WHERE IN ()"子句中带有COUNT的所有值

sql-server - TSQL:如何在 XML 中进行自连接以获得嵌套文档?

ruby-on-rails - Rails 4 - MS SQL select * 语句返回总计数

c++ - Windows 与 Linux 内存分配/std::list 构造函数性能

ssl - 使用 SSL 的客户端身份验证,无需任何客户端代码实现

sql - 有没有办法使用 SQL Server 2012 查找 View 中引用的所有无效列?

windows - 使用 git 时 Mac/Windows 的文件权限问题

windows - 如何检查文件扩展名并相应地使用 Windows 批处理文件中的默认程序打开

authentication - 受密码保护的网站的登录例程

authentication - RabbitMQ 如何在直接交换中为路由 key 设置用户权限?