我们目前正在开发用于扩展SharePoint功能的扩展服务。
目前,我们在冒充用户方面确实存在问题。我们提供了一个 REST 服务,它调用一些 SharePoint SOAP 方法。
基本上,UI调用REST服务(WebAPI(,该服务使用Windows身份验证/WebAPI代码,然后模拟运行,然后应调用SOAP(WCF(API作为模拟用户。
我们在代码中所做的是这样的
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
{
SoapClient service = new SoapClient ();
service.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
....
目前我们收到以下错误:
HTTP 请求在客户端身份验证方案中未经授权 "谈判"。从服务器收到的身份验证标头是 '谈判,NTLM
有没有技巧可以在 web.config 中解决此问题?
希望你能帮助我;-(谢谢。
亲切问候。 壹岐
我们做了很多研究,这实际上是一个基础设施问题。 由于服务之间的连接"希望"通过多个林,模拟失败。
我认为您还应该将ClientCredentials.Windows.ClientCredential
设置为System.Net.CredentialCache.DefaultNetworkCredentials
https://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultnetworkcredentials(v=vs.110(.aspx
属性返回的凭据仅适用于 NTLM、协商和基于 Kerberos 的身份验证。
DefaultNetworkCredentials 返回的凭据表示运行应用程序的当前安全上下文的身份验证凭据。对于客户端应用程序,这些通常是运行该应用程序的用户的 Windows 凭据(用户名、密码和域(。对于 ASP.NET 应用程序,默认网络凭据是登录用户或被模拟用户的用户凭据。