我在服务器A上运行的Web应用程序调用服务器B上的WCF服务(K2工作流),该服务要求模拟/委派作为调用用户运行。如果我从服务器A运行Web应用程序,该应用程序运行良好。如果我在调试中从我的本地PC运行应用程序,它也很有效。如果我从我的PC上的浏览器点击应用程序到服务器A,我收到以下错误:
HTTP请求未经授权使用客户端身份验证方案'Ntlm'。从服务器收到的身份验证标头是'Ntlm,Negotiate'。 System.Net.WebException:远程服务器返回错误:(401)未经授权。 System.Service.Net.HttpWebRequest.GetResponse()at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)。
我使用以下代码运行服务:
SvcWorklist.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
SvcWorklist.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
我觉得我已经完成了所有事情,这里列出了我尝试的内容:
真正感谢任何帮助或想法。
答案 0 :(得分:0)
对于有同样问题的家伙 - 我明白了。我在目标服务上设置了SPN,而不是它托管的服务。我还需要设置sharepoint以使用negotiate与ntlm。