2

这是对发布报告服务身份验证建议的扩展,因为我无法在该线程上提交冗长的帖子(道歉管理员)。

基本上,我将报告服务的本地安装配置为使用 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) 我当前的设置是否有任何需要注意的地方,这可能会在未来引起问题。

提前谢谢了。

JFB

4

2 回答 2

2

有2个安全方面需要处理

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

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

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

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

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

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

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

运行您的帐户

于 2012-11-22T15:50:44.533 回答
1

您遇到这种情况的原因(即 user = null)是因为您要求报表服务器验证 Kerberos 凭据。这里有一个广泛的帖子,但您的问题的症结在于您要求报表服务器验证 Windows 凭据,但 Active Directory 不信任您的计算机来传递这些凭据。如果您正确设置了委派,它将在没有登录提示的情况下满足您的要求,并且您可以通过第 4 点控制可见性。

于 2012-11-22T15:50:10.883 回答