我们目前正在开发一种用于扩展SharePoint功能的扩展服务。
目前我们在冒充用户时遇到问题。我们提供了一个调用一些SharePoint SOAP方法的REST服务。
基本上,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中有解决这个问题的技巧吗?
希望你能帮帮我;-)谢谢你。
亲切的问候。 壹岐
答案 0 :(得分:1)
我们做了很多研究,实际上这是一个基础设施问题。 由于服务“希望”通过多个森林之间的连接,模仿失败。
答案 1 :(得分:0)
我认为您还应该将ClientCredentials.Windows.ClientCredential
设置为System.Net.CredentialCache.DefaultNetworkCredentials
DefaultNetworkCredentials属性返回的凭据仅适用于NTLM,协商和基于Kerberos的身份验证。
DefaultNetworkCredentials返回的凭据表示运行应用程序的当前安全上下文的身份验证凭据。对于客户端应用程序,这些应用程序通常是运行应用程序的用户的Windows凭据(用户名,密码和域)。对于ASP.NET应用程序,默认网络凭据是登录用户或被模拟用户的用户凭据。