【发布时间】:2011-11-06 20:50:43
【问题描述】:
我有一台托管 Sharepoint 2010 的服务器。我还有另一台托管 SQL Server 2008 R2 的服务器。 SharePoint 基于 Kerberos/声明。
在我的 SharePoint 上,我安装了一个自定义 Web 部件,它使用标准连接字符串 (Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;) 连接到 SQL Server 机器。
问题是当 webpart 尝试连接到 sql server 时,我收到以下消息:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
我们做了什么:
- 验证所有 spn/delegation/trusts 事项 - 一切正常。
- 尝试通过 UDL 文件直接从 sharepoint 机器连接到 sql server,并且成功了。
- 在单机服务器上尝试将 webpart 作为独立的 ASPX 页面,以证明代码应该可以正常工作。
- Wireshark -> 当 ANONYMUS LOGON 尝试连接到 sql server(很明显)时,我们可以看到 KDC_ERR_S_PRINCIPAL_UNKNOWN。
- SharePoint Developer Dashboard 向我们显示了我们当前的用户名,它不是 ANONYMUS。
- webpart 中的跟踪显示了两件事:HTTPCONTEXT 设置为我当前的用户,Thread.Current 也是如此。
- 使用 SQL Profiler,我们可以看到请求来自 ANONYMUS
- 我们尝试从另一个自定义 Web 部件访问另一个服务器上的 Web 服务,但由于同样的原因(匿名)失败。
我们缺少什么?问题似乎确实是 SharePoint 无法将当前用户凭据发送到另一台服务器(sql 与否)。
【问题讨论】:
标签: sharepoint sharepoint-2010 kerberos claims-based-identity