C# 如何在web.config中为CustomBinding配置TransportSecurityBindingElement?
我想通过web.config配置以下(简化的)代码C# 如何在web.config中为CustomBinding配置TransportSecurityBindingElement?,c#,.net,wcf,C#,.net,Wcf,我想通过web.config配置以下(简化的)代码 var security = new TransportSecurityBindingElement(); security.EndpointSupportingTokenParameters.SignedEncrypted.Add(new UserNameSecurityTokenParameters()); var binding = new CustomBinding(security); 是否可以使用web配置配置此自定义绑定?如果
var security = new TransportSecurityBindingElement();
security.EndpointSupportingTokenParameters.SignedEncrypted.Add(new UserNameSecurityTokenParameters());
var binding = new CustomBinding(security);
是否可以使用web配置配置此自定义绑定?如果可能,我如何配置支持令牌参数的端点?我尝试了以下配置,但它无法针对DotNetConfig.xsd进行验证:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="SomeBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
<transportSecurity> <!-- Fails validation -->
<!-- How do I configure the EndpointSupportingTokenParameters -->
</transportSecurity>
</binding>
</customBinding>
</bindings>
<client>
...
</client>
</system.serviceModel>
...
我认为您只需使用自定义绑定/安全性
,也许可以使用身份验证模式
,即用户名过度传输
:
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<security authenticationMode="UserNameOverTransport" />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
(从UserNameSecurityTokenParameters
窃取的令牌类型)
老实说,这可能太麻烦了,只需编写代码就可以了。如果您需要根据环境的不同而有所不同,请在配置中定义工厂,并使用DI来使用它创建绑定
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<security authenticationMode="UserNameOverTransport">
<issuedTokenParameters tokenType="http://schemas.microsoft.com/ws/2006/05/identitymodel/tokens/UserName" />
</security>
</binding>
</customBinding>
</bindings>
</system.serviceModel>