2012-02-07 69 views
0

我们使用下述对我们服务的安全配置WCF安全协商例外

配置:

<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

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

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

+0

服务器和客户端都有相同的时间。 – KiranKumarSingani 2012-02-07 08:06:47

+0

尝试向客户端添加跟踪(http://msdn.microsoft.com/zh-cn/library/ms733025.aspx)。请注意,msdn示例包含System.IdentiyModel。 – Huusom 2012-02-07 09:02:16