WCF安全协商异常

时间:2012-02-07 07:55:31

标签: .net wcf wcf-security

我们正在为我们的服务使用下面提到的安全配置

配置:

<security mode="Message">
    <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
    <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
</security>

在我们的本地网络访问服务时,我们从一些客户端获得以下异常:

System.ServiceModel.Security.SecurityNegotiationException: The caller was not authenticated by the service. ---> System.
ServiceModel.FaultException: The request for security token could not be satisfied because authentication failed.
   at System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message message, EndpointAddress target)
   at System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(Message incomingMessage, Sspi
NegotiationTokenProviderState sspiState)

我收集了WCF跟踪,但没有帮助。我猜测windows kerberos无法验证Windows身份。我已经验证ADS中提供了客户端计算机/登录用户详细信息,并且服务器和客户端都在同一个域中。

如果您有任何解决此问题的方法,请与我们联系。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

可能时间偏差。尝试查看受影响的客户端时钟是否不同。

否则。如果您可以将Visual Studio调试器附加到客户端代码,并禁用“只是我的代码”,则可以中断WCF中的内部异常。默认情况下,WCF会隐藏所有内部异常。