我正尝试从不驻留在SharePoint服务器上的Asp.NET 4.0应用程序调用SharePoint Search Web服务。 一切似乎工作,接受它使用AppPool的凭据(域服务帐户)来validation到SharePoint,它只返回该引脚有权访问的结果。 我需要能够做的是冒充呼叫用户,这样我得到的结果是该用户而不是域帐户。 我已经将应用程序正在运行的服务器设置为受信任委派给SharePoint服务器正在使用的http spn,但是在执行模拟代码时出现401错误。 我可能做错了什么?
这就是所谓的NTLM身份validation的“双跳”限制,这意味着它不能将用户凭证从一台服务器传递到下一台服务器。 请参阅http://support.microsoft.com/kb/264921中的“挑战/解决scheme”部分。 为了克服这个问题,您需要转换为Kerberos身份validation或基于声明的(如果您拥有SharePoint 2010)。 这些选项都不能轻视。
但是,根据应用程序的需要,您可以通过jQuery( http://jquery.com/ )简单地使用客户端调用Web服务。 该调用将来自浏览器而不是SharePoint服务器,因此会传递用户的凭据。