我是 WCF
的新手,我有一个相对简单的问题,我似乎找不到简单的答案。我正在尝试查看是否必须明确使用证书来验证绑定(bind)的两端是否真实。我更愿意使用 TcpClientCredentialType.Windows
安全性通过 ProtectionLevel.EncryptAndSign
为我完成这一切。这足以让客户端和服务器相互信任它们没有被篡改吗?我的客户端 dll 和服务器进程都使用相同的证书签名,但是有人可以创建一个使用我的契约(Contract)的虚假服务而我的客户端不会意识到吗?
最佳答案
MSDN 包含使用 Windows Communication Foundation (WCF) 创建安全应用程序时要考虑的最佳做法列表。
WCF 提供两种对等身份验证机制:X509 证书(由对等 channel 使用)和 Windows 身份验证,其中 SSPI 协商从 Kerberos 降级为 NTLM。出于以下几个原因,使用 1024 位或更多 key 大小的基于证书的身份验证优于 NTLM:
- 相互认证的可用性,
- 使用更强大的加密算法,以及
- 使用转发的 X509 凭据的难度更大。
就其值(value)而言,您可能需要考虑证书,甚至是自签名证书,以确保最佳端点安全性。
关于c# - 将 NetTCPBinding 与 TcpClientCredentialType.Windows 结合使用的 WCF 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604127/