我在正确配置 IIS 身份验证方面遇到了很多麻烦。我有一个在 IIS 6.0 下运行的 SharePoint 网站,并且该 IIS 网站配置为集成 Windows 身份验证。Web 服务器位于名为 的域上STAGING
,我的大多数用户都位于另一个名为 的域中CORP
。CORP
用户拥有STAGING
域帐户,并且能够跨域登录 SharePoint 网站(例如,用户登录到他们的CORP
工作站并能够登录网站)。但是,STAGING
域用户无法从域内登录STAGING
。我的理解是STAGING
域用户应该能够访问该网站而无需提示输入凭据,但事实并非如此。即便如此,一旦输入凭据,结果始终是 401。
我查看了 Fiddler 中的 HTTP 会话,发现服务器似乎不接受客户端浏览器发送的协商凭据。以下是简要记录:
HTTP GET server /sites/mysite with headers: { }
--> 401.2, with headers: { WWW-Authenticate: Negotiate, WWW-Authenticate: NTLM }
HTTP GET server /sites/mysite with headers: { Authorization: Negotiate <digest1> }
--> 401.1, with headers: { WWW-Authenticate: Negotiate <digest2> }
HTTP GET server /sites/mysite with headers: { Authorization: Negotiate <digest3> }
--> 401.1, with headers: { WWW-Authenticate: Negotiate <digest4> }
GET/401.1 循环重复 3 次,然后浏览器最终放弃。
我希望如果我正确配置了所有内容,域内的客户端只需传递凭据,生活就会很好,但事实并非如此,生活并不好 :-(
有人有什么建议吗?
答案1
听起来像是 Kerberos/SPN 问题。简单的解决方法是禁用 Kerberos 以支持 NTLM。您可以在 Sharepoint 的中央管理站点中执行此操作。
您还可以将您网站的 SPN 添加到 SharePoint 服务帐户。
看