我正在使用WCF
实现的客户端 - 服务器项目。客户端部署在不同的计算机上,并通过Internet与服务进行通信。我对WCF
比较新,对于为我的Web服务选择合适的绑定有点困惑。客户端需要被授权执行操作,但是,我正在实现自己的身份验证算法并尝试避免Windows身份验证,原因有多种,但我仍然需要确保在通道中传输的邮件是加密的。
现在我正在使用安全模式设置为wsHttpBinding
的{{1}}。完整配置如下所示:
我已将Message
中的身份验证类型设置为IIS
以确保请求通过,并且由于我的绑定中的Anonymous Authentication
已明确指出,因此期望服务调用失败设为MessageClientCredentialType
。但是,当我运行代码时,服务成功调用并返回预期值。我有一种感觉,我错过了一些东西 - 为什么电话会被授权?即使身份验证类型设置为Windows
,我还能确保邮件仍然是加密的吗?任何帮助表示赞赏。
为了澄清这一点,我使用部署到不同域的网络外部机器的客户端测试了该服务。
答案 0 :(得分:0)
这篇MSDN文章总结了许多与WCF相关的安全问题
http://msdn.microsoft.com/en-us/library/ms733836.aspx
关于你的具体情况,
negotiateServiceCredential="true"
表示您将证书分发简化到客户端以进行邮件加密。
此选项仅适用于Windows客户端,并且存在一些性能问题。 在此处阅读更多内容http://msdn.microsoft.com/en-us/library/ff647344.aspx 在此页面中搜索“简化证书分发”主题。
答案 1 :(得分:0)
您使用哪个帐户拨打服务电话?在IIS中允许匿名允许您的请求传递给服务,如果您的调用者具有Windows可识别的凭据(Active Directory / NTLM),则服务应进行身份验证。 在您的情况下,我认为您在自己的环境中测试它,以便服务响应。一旦你通过互联网部署它,我怀疑如果你将clientcredentialtype保存到windows,你的服务将允许域外的任何人。 检查这些链接以确保Internet上的服务 - http://msdn.microsoft.com/en-us/library/ms734769.aspx http://msdn.microsoft.com/en-us/library/ms732391.aspx