断开连接的域客户端上的SecurityNegotiationException

时间:2010-03-04 07:43:36

标签: .net wcf wcf-security

当我在我的开发机器上运行WCF服务时,只要客户端连接到域,它就会起作用。

当机器断开连接时,我得到以下异常:

  

System.ServiceModel.Security.SecurityNegotiationException:对SSPI的调用失败,请参阅内部异常。   System.Security.Authentication.AuthenticationException:对SSPI的调用失败,请参阅内部异常。 --->   System.ComponentModel.Win32Exception:系统检测到可能危及安全性的尝试。   请确保您可以联系经过身份验证的服务器

该服务在内部使用安全性(<transport clientCredentialType="Windows" protectionLevel="None"/>),因此我无法轻易将其关闭。

有没有办法解决这个问题所以我可以在没有连接时测试服务?

3 个答案:

答案 0 :(得分:3)

未连接到域时可能无效。

多个绑定的默认WCF安全性是“Windows”,例如您当前的用户凭据正在传递给WCF服务,然后该服务尝试针对Windows域验证这些用户凭据。

如果您没有连接,则无法进行验证,因此WCF服务将拒绝该呼叫。按设计工作,我会说:-)

也许您可以为您的服务公开第二个端点(“本地开发测试”),而不需要Windows身份验证?离开域时,只需连接到该非安全端点,以便至少可以测试服务及其内部工作。

答案 1 :(得分:3)

解决方法涉及从客户端应用程序中删除UserPrincipal(在app.config中)

<identity>
    <userPrincipalName value="SOME-DOMAIN\SomeUser" />
</identity>

答案 2 :(得分:0)