我们正在为我们的服务使用下面提到的安全配置
配置:
<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中提供了客户端计算机/登录用户详细信息,并且服务器和客户端都在同一个域中。
如果您有任何解决此问题的方法,请与我们联系。
非常感谢您的帮助。
答案 0 :(得分:0)
可能时间偏差。尝试查看受影响的客户端时钟是否不同。
否则。如果您可以将Visual Studio调试器附加到客户端代码,并禁用“只是我的代码”,则可以中断WCF中的内部异常。默认情况下,WCF会隐藏所有内部异常。