如何在WCF中使用自定义绑定并使用用户名客户端凭据保持消息安全模式?

Ser*_*lov 14 c# wcf wcf-security

我可以通过Internet访问WCF服务,它使用带有消息安全模式和用户名客户端凭据的wsHttpBinding.

<bindings>
    <wsHttpBinding>
        <binding name="wsHttpEndpointBinding" messageEncoding="Mtom" maxReceivedMessageSize="104857600">
           <readerQuotas maxArrayLength="104857600"/>
           <security mode="Message">
            <message clientCredentialType="UserName"/>
           </security>
        </binding>
    </wsHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

我发现将数据从客户端传输到服务器需要花费太多时间.我已经读过我可以为我的服务使用customBinding和binaryEncoding模式.

像那样:

<bindings>
   <customBindings>
     <binding name="NetHttpBinding">
       <binaryMessageEncoding />
       <httpTransport />
     </binding>
  </customBindings>
<bindings>
Run Code Online (Sandbox Code Playgroud)

但是这里没有提到消息安全模式和客户端凭据类型......

我如何使用binaryEncoding自定义绑定并使用用户名客户端凭据保持消息安全模式?

mag*_*nus 1

将 secureConversationBootstrap 设置为 UserNameForSslNegotiated。尝试类似于下面的绑定的操作。

<bindings>
<customBinding>
  <binding name="wss-username-binary">
    <transactionFlow/>

    <security 
authenticationMode="SecureConversation" 
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">

      <secureConversationBootstrap 
authenticationMode="UserNameForSslNegotiated" 
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" />
    </security>

      <binaryMessageEncoding />
    <httpTransport/>
  </binding>
</customBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)