【问题标题】:SecurityNegotiationException on disconnected domain client断开连接的域客户端上的 SecurityNegotiationException
【发布时间】:2010-03-04 07:43:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: .net wcf wcf-security


    【解决方案1】:

    未连接到域时可能无法正常工作。

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

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

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

    【讨论】:

    • 感谢您的回答,尽管我希望有一个简单的解决方法:)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2010-11-01
      • 2017-07-17
      • 2021-12-05
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多