这是对发布报告服务身份验证建议的扩展,因为我无法在该线程上提交冗长的帖子(道歉管理员)。
基本上,我将报告服务的本地安装配置为使用 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 中存在的登录名,则可以在浏览器中成功运行报告。
我想实现的理想解决方案如下:
- 用户在浏览器中加载报表服务器 URL。
- 系统会提示用户输入其 Windows/AD 凭据(包括域前缀)。
- 在幕后,用户被允许进入报表服务器。
- 用户将只能看到他/她被允许查看的报告文件夹和报告。这将通过将允许的 AD 组/用户添加到报告文件夹和报告中来控制(我知道如何执行此操作)。我不希望必须维护单独的 SQL Server 用户帐户。
我感觉好像我快到了,即与报表服务器的连接在允许用户访问报表服务器之前提示用户输入他们的 Windows 凭据。
请有人告诉我:
a) 为什么当我通过本地浏览器访问报表时,系统提示我登录 windows,但当其他 windows 用户通过浏览器窗口远程访问我的报表服务器时,却没有提示登录?
b)如果应该实施更好的整体解决方案,请您建议或指出相关资源。
c) 我当前的设置是否有任何需要注意的地方,这可能会在未来引起问题。
提前谢谢了。
JFB