1

我正在开发一个使用WCF. 客户端部署在不同的机器上,并通过互联网与服务进行通信。我对 比较陌生WCF,并且在为我的 Web 服务选择合适的绑定时有点困惑。客户端需要获得授权才能执行操作,但是,我正在实现自己的身份验证算法并出于各种原因试图避免 Windows 身份验证,但我仍然需要确保在通道中传输的消息是加密的。

现在我正在使用wsHttpBinding安全模式设置为Message. 完整配置如下所示:

在此处输入图像描述

我已将身份验证类型设置IISAnonymous Authentication以确保请求通过,并期望服务调用失败,因为MessageClientCredentialType在我的绑定中明确设置为Windows. 但是,当我运行代码时,服务会成功调用并返回预期值。我有一种我错过了什么的感觉 - 为什么呼叫被授权?即使身份验证类型设置为,我能否确保消息仍处于加密状态Anonymous?任何帮助表示赞赏。

编辑

为了澄清这一点,我使用部署到不同域的网络外部机器上的客户端测试了该服务。

4

2 回答 2

0

这篇 MSDN 文章总结了很多与 WCF 相关的安全问题

http://msdn.microsoft.com/en-us/library/ms733836.aspx

关于您的具体情况,这negotiateServiceCredential="true"意味着您可以简化向客户分发证书以进行消息加密。

此选项仅适用于 Windows 客户端,并且存在一些性能问题。在此处阅读更多信息http://msdn.microsoft.com/en-us/library/ff647344.aspx 在此页面中搜索主题“简化证书分发”。

于 2013-07-15T06:05:34.483 回答
0

您使用哪个帐户来调用服务?在 IIS 中允许匿名可以让您的请求传递到服务,并且如果您的调用者具有 Windows 可以理解的凭据(Active Directory/NTLM),则服务应该进行身份验证。就您而言,我认为您正在自己的环境中对其进行测试,以便服务做出响应。一旦通过 Internet 部署它,如果您将 clientcredentialtype 保留为 windows,我怀疑您的服务将允许您域之外的任何人。检查这些链接以保护 Internet 上的服务 - http://msdn.microsoft.com/en-us/library/ms734769.aspx http://msdn.microsoft.com/en-us/library/ms732391.aspx

于 2013-07-15T11:20:32.770 回答