服务器位于工作组(不是域)。自托管WCF服务配置了Windows安全性。绑定是netTcpBinding。
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
</security>
WCF客户端在同一台服务器上运行。
服务器证书用于加密流量(可能无关紧要)
我实施了一个简单的测试程序。一切正常。
但是当我在我们的产品中实现它时,客户端无法登录。在事件日志中,我看到审计失败:
Failure Information:
Failure Reason: An Error occured during Logon
Status: 0xc000006d
Sub Status: 0x0
通过Google搜索,我找到了此页面的解决方法:http://support.microsoft.com/kb/896861
在注册表中禁用环回检查后,登录成功。
但我不想在生产环境中禁用环回检查安全性。我需要找出这个问题的原因。
我的问题是:为什么我的测试程序工作正常,但是暴露多个端点的产品遇到了环回检查安全问题?是否有一些WCF组件/配置会导致此问题?
更多信息:为了测试,我针对我的产品创建了一个简单的wcf客户端。成功验证测试客户端调用并启用环回检查。在我看来,问题出在wcf客户端......有什么想法吗?
答案 0 :(得分:0)
发现我的问题:我使用了CN =“WCF Security”的自签名证书。服务器和客户端上的端点都具有“身份”,定义为:
<identity>
<dns value="WCF Security" />
</identity>
更改为
后<dns value="localhost" />
甚至完全删除“身份”,现在登录成功而不禁用环回检查安全性。
我不完全理解端点身份和证书CN之间的关系。