【问题标题】:WebAPI to SOAP call impersonationWebAPI 到 SOAP 调用模拟
【发布时间】:2017-07-01 09:51:42
【问题描述】:

我们目前正在开发用于扩展 SharePoint 功能的扩展服务。

目前我们在模拟用户方面确实存在问题。我们提供调用一些 SharePoint SOAP 方法的 REST 服务。

基本上,UI 调用使用 Windows 身份验证/WebAPI 代码的 REST 服务 (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 中是否有解决此问题的技巧?

希望你能帮助我 ;-) 谢谢你的预测。

亲切的问候。 壹岐

【问题讨论】:

    标签: c# .net rest wcf soap


    【解决方案1】:

    我们做了很多研究,这实际上是一个基础设施问题。 由于“希望”通过多个林的服务之间的连接,模拟失败。

    【讨论】:

      【解决方案2】:

      我认为您还应该将ClientCredentials.Windows.ClientCredential 设置为System.Net.CredentialCache.DefaultNetworkCredentials

      https://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultnetworkcredentials(v=vs.110).aspx

      DefaultNetworkCredentials 属性返回的凭据仅适用于 NTLM、协商和基于 Kerberos 的身份验证。

      DefaultNetworkCredentials 返回的凭据表示应用程序正在运行的当前安全上下文的身份验证凭据。对于客户端应用程序,这些通常是运行应用程序的用户的 Windows 凭据(用户名、密码和域)。对于 ASP.NET 应用程序,默认网络凭据是登录用户或被模拟用户的用户凭据。

      【讨论】:

      • 嗨,Subbu,谢谢你的想法。不幸的是,它没有用。使用 (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 适用于 CSOM,但不适用于 SOAP
      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2013-08-15
      • 2021-08-16
      相关资源
      最近更新 更多