我有一个在IIS 6和WCF上运行的.Net服务,我想为它创建两个端点.一个使用HTTPS和基本身份验证进行保护,这些身份验证将从我们的DMZ和一个没有安全性的端点进行访问,只能从内部安全网络访问.防火墙和.Net过滤器将确保在安全网络外无法访问不安全的服务.
到目前为止,我还没有成功地让两个端点使用不同的安全参数.我尝试过的一种配置是:
<service name="My.Service">
<host>
<baseAddresses>
<add baseAddress="http://localhost/MyService/"/>
</baseAddresses>
</host>
<endpoint address="UnSecuredAccessToMyService.svc"
behaviorConfiguration="restBehavior"
name="UnSecureEndpoint"
binding="webHttpBinding"
bindingName="SomeBindingName"
bindingNamespace="http://mydomain/myservice"
contract="Domain.MyService.MyClass" />
<endpoint address="SecuredAccessToMyService.svc"
behaviorConfiguration="secBehavior"
name="SecuredEnpoint"
binding="webHttpBinding"
bindingConfiguration="customSecureBinding"
bindingName="SecBindingName"
bindingNamespace="http://mydomain/myservice"
contract="Domain.MyService.MyClass" />
</service>
<behaviors>
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp />
</behavior>
<behavior name="secBehavior">
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="customSecureBinding">
<security mode="Transport">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</webHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)
UnSecuredAccessToMyService.svc和SecuredAccessToMyService.svc文件如下所示:
<%@ ServiceHost
Factory="somefactory, anotherfactory"
Service="My.Service, AnotherService"
%>
Run Code Online (Sandbox Code Playgroud)
我是WCF和.Net的新手,所以额外的细节可以真正帮助,谢谢!
看起来你的绑定和行为有点混乱了.尝试将配置更改为以下内容:
<services>
<service name="My.Service">
<endpoint address="UnSecuredAccessToMyService.svc"
binding="webHttpBinding"
bindingNamespace="http://mydomain/myservice"
contract="Domain.MyService.MyClass" />
<endpoint address="SecuredAccessToMyService.svc"
binding="webHttpBinding"
bindingName="secureWebHttpBinding"
bindingNamespace="http://mydomain/myservice"
contract="Domain.MyService.MyClass" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="secureWebHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</webHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)
这指定两个端点应该使用WebHttpBinding
,但是一个将使用默认绑定,另一个将使用命名绑定"secureWebHttpBinding",其配置为使用传输层安全性(SSL)和基本客户端身份验证.
这些不应该需要进一步的配置或自定义行为,除非您有超出默认内置的需求.
不幸的是,很多WCF都是试错法调试,直到你确切地确定哪个元素没有正确运行.如果我给你的信息不起作用,请指出问题的更多症状,我会尝试提供进一步的帮助.
归档时间: |
|
查看次数: |
8714 次 |
最近记录: |