WebAPI to SOAP 调用模拟



我们目前正在开发用于扩展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 应用程序,默认网络凭据是登录用户或被模拟用户的用户凭据。

最新更新