我们有一个WCF服务,我使用wsHttpBinding与传输安全性和自定义身份验证.
我最近发现默认情况下会启用安全会话(请参阅此SO问题).
我很惊讶这样的功能默认开启.我认为默认情况下我会得到最简单的配置,其他功能将在选择加入的基础上.
我想从最简单的功能集开始,然后决定选择加入更多功能.
所以我的问题是:默认情况下启用的其他功能是什么?如何关闭它们?
这取决于:-)按照惯例.
您是否希望拥有面向外部的服务,来自网络外部的用户可以拨打电话?如果是这样,那么使用basicHttpBinding与传统ASMX Web服务基本相同的内容(SOAP 1.1,非常基本,几乎没有任何安全性和可靠性功能).或者wsHttpBinding从一开始就使用(SOAP 1.2,WS-*stuff),但首先关闭所有功能.
使用basicHttpBinding,以后没有太多"开启" - 你有点卡住,需要切换到wsHttpBinding或创建自己的自定义绑定超出基本功能.wsHttpBinding非常重,但大多数功能,如安全性,可靠性等,可以在以后关闭或重新启动.但是:并非每个客户端应用程序都可以连接到wsHttpBinding端点.
或者:使用几个端点!一个非常简单的使用basicHttp用于"遗留"客户端,一个更高级的wsHttpBinding - 这是WCF服务的美妙之处 - 您编写服务代码一次并将其暴露在众多不同的端点上,就像您的客户需要它们一样!
如果你是内部的,在公司防火墙内,选择很简单 - 使用netTcpBinding- 它很快(因为它使用二进制而不是文本编码)并且具有许多可以调整的功能.
更新:因为它是一个面向外部的服务,并且所有类型的客户端都可以连接,我会使用带有用户名/密码安全性的basicHttpBinding:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsMsgSec">
<security mode="Message">
<message clientCredentialType="None" establishSecurityContext="false" negotiateServiceCredential="false"/>
</security>
<reliableSession enabled="false"/>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="YourService">
<endpoint
address=""
binding="wsHttpBinding"
bindingConfiguration="wsMsgSec"
contract="IYourServiceContract" />
</service>
</services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
对于消息安全标记上的"clientCredentialType",您还可以使用"UserName" - 在这种情况下,您必须设置一些基础结构(例如ASP.NET成员资格提供程序系统)以验证传入的用户名/密码证书.
另外,请务必查看WCF安全指南,其中包含针对各种不同安全方案的逐步说明,以及如何在web.config和WCF配置中为每个方案执行操作.
| 归档时间: |
|
| 查看次数: |
6578 次 |
| 最近记录: |