SharePoint列表数据源出现HTTP 401“未经授权”的错误

5
我已经建立了一个报告,使用SharePoint列表作为其数据源。在SSRS中,数据源设置为使用Windows身份验证(集成安全性)。它在SSRS/BIDS中运行得很好,但是在部署到报告管理器环境时,我收到了一个错误:

报告处理期间发生错误。(rsProcessingAborted)

数据集“ListData”的查询执行失败。(rsErrorExecutingCommand)

访问指定的SharePoint列表时发生错误。连接字符串可能无效。请验证连接字符串是否正确。(rsSPDataProviderError)

HTTP状态401:未授权的请求失败。

我从BIDS将报告对象和数据源都部署到了环境中。我检查了属性,确认Report Manager端也设置了集成安全性,所以我不确定为什么没有正确传递凭据到来源。

有什么想法/建议吗?


3
看起来像是“双跳问题”(http://weblogs.asp.net/owscott/archive/2008/08/22/iis-windows-authentication-and-the-double-hop-issue.aspx)。 - user1578107
看起来就是这样。SharePoint源接受来自BIDS的凭据,但不接受从报表服务器第二次传递给它的Windows身份验证凭据。如何解决这个问题?我应该在SSRS中创建一个服务帐户以被SharePoint接受吗? - dp3
使用存储的凭据或Kerberos。 - user1578107
3个回答

8
SSRS的服务账户并不能帮到你,虽然为SSRS服务设置特定的服务账户是很好的,但这并不是用于身份验证的。在服务器上使用报告服务配置工具设置执行账户也是有帮助的,可以帮助运行无人值守的报表,但这不是你目前面临的问题。
Kerberos是一个选择,但如果你还没有使用它,那么为了解决一个小问题而进行大量的努力可能并不划算。
Sharepoint列表数据源只接受集成安全连接,因此你需要在报告服务器中将Windows用户作为凭据存储在数据源中。
我通常会创建一个名为Reportuser的用户(例如reportuser@[domain].com),在你的域上创建这个用户,并确保它能够访问SharePoint。
在BIDS/Visual Studio中,对于报告的数据源属性,在凭据选项卡下,单击“使用Windows身份验证(集成安全性)”旁边的单选按钮。 上传数据源到报告管理器网站。(你已经完成了这一步)。
导航到报告管理器网站以及上传的数据源的属性。
在以下部分开始的部分下: 勾选“在报表服务器中安全地存储凭据”选项。
像这样输入用户名和密码(其中domain被替换为你的网络域): reportuser@domain.com password
重要部分:勾选“作为连接到数据源时使用的Windows凭据”。
测试连接,它将会正常工作-我刚刚测试过了。

感谢您提供了一份出色的上下文解释。除了避免创建这些执行帐户之外,使用Kerberos还有什么好处吗?相反,执行帐户是否会带来任何真正的安全风险,值得通过Kerberos实施来缓解呢? - dp3
我从未在一个网络管理员有勇气设置Kerberos的商店工作过。似乎因为某种原因而被憎恨。只要遵循良好的标准实践,我不认为存在任何安全风险。嗯,完美的安全是不存在的,所以只要尽可能做到就好了。 - Davos

2

请检查以下情况:

  1. 在数据源的“连接使用”部分中选择第二个选项。请参考附图。 Image

  2. 检查是否已正确配置所有web.config条目。您可以通过附加w3wp进程来跟踪此类型的错误。


谢谢。您能否向我解释一下“连接到数据源时使用作为Windows凭据”和“在连接到数据源后模拟已验证的用户”的区别,或者在仍存储凭据的情况下将这两个选项都取消选择? - dp3

0
我曾经遇到过类似的问题,发现是由于SharePoint Designer和Visual Studio使用相同的凭据所导致的帐户错误。当我尝试部署我的报告时,发现它失败了,因为它使用了一个没有权限的用户。该用户不是当前登录用户,而是我上次用于登录SharePoint Designer的用户。一旦我使用具有所需报告权限的用户登录SharePoint Designer后,Visual Studio就能够正确地登录SSRS。这两个程序之间的Windows凭据是相互关联的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接