Vorgehensweise: Erstellen einer Bindung mit DuplexverbundHow to: Create a Duplex Federated Binding

WSFederationHttpBinding unterstützt lediglich Datagramm- sowie Anforderung/Antwort-Nachrichtenaustauschverträge.WSFederationHttpBinding only supports the datagram and request/reply message exchange contracts. Für die Verwendung des Duplexnachrichtenaustauschvertrags muss eine benutzerdefinierte Bindung erstellt werden.To use the duplex message exchange contract, you must create a custom binding. In den folgenden Verfahren wird gezeigt, wie dies in der Konfiguration umgesetzt werden kann. Verwendet werden die Nachrichtenmodussicherheit bei HTTP und TCP sowie die Sicherheit im gemischten Modus bei TCP.The following procedures show how to do this in configuration, using Message mode security for the HTTP and TCP transports, and using mixed mode security for the TCP transport. Beispielcode mit allen drei Bindungen finden Sie am Ende dieses Themas.Sample code showing all 3 bindings is at the end of this topic.

Die Bindung kann auch im Code erstellt werden.You can also create the binding in code. Eine Beschreibung des bindungsstapels Elemente erstellen, finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement.For a description of the binding elements stack to create, see How to: Create a Custom Binding Using the SecurityBindingElement.

So erstellen Sie eine benutzerdefinierte Bindung mit HTTP und DuplexverbundTo create a duplex federated custom binding with HTTP

  1. In der <Bindungen > Knoten, der die XML-Konfigurationsdatei erstellen eine <CustomBinding > Element.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. Innerhalb der <CustomBinding > Element, erstellen Sie eine <Bindung > Element mit der name -Attributsatz zur FederationDuplexHttpMessageSecurityBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexHttpMessageSecurityBinding.

  3. Innerhalb der <Bindung > Element, erstellen Sie eine <Sicherheit > Element mit der authenticationMode -Attributsatz zur SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. Innerhalb der <Sicherheit > Element, erstellen Sie eine <SecureConversationBootstrap > Element mit der authenticationMode -Attributsatz zur IssuedTokenForCertificate oder IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Nach der <Sicherheit > Element, erstellen Sie eine leere <CompositeDuplex > Element.Following the <security> element, create an empty <compositeDuplex> element.

  6. Nach der <CompositeDuplex > Element, erstellen Sie eine leere <OneWay > Element.Following the <compositeDuplex> element, create an empty <oneWay> element.

  7. Nach der <OneWay > Element, erstellen Sie eine leere <HttpTransport > Element.Following the <oneWay> element, create an empty <httpTransport> element.

So erstellen Sie eine benutzerdefinierte Bindung mit TCP-Nachrichtensicherheitsmodus und DuplexverbundTo create a duplex federated custom binding with TCP message security mode

  1. In der <Bindungen > Knoten, der die XML-Konfigurationsdatei erstellen eine <CustomBinding > Element.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. Innerhalb der <CustomBinding > Element, erstellen Sie eine <Bindung > Element mit der name -Attributsatz zur FederationDuplexTcpMessageSecurityBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexTcpMessageSecurityBinding.

  3. Innerhalb der <Bindung > Element, erstellen Sie eine <Sicherheit > Element mit der authenticationMode -Attributsatz zur SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. Innerhalb der <Sicherheit > Element, erstellen Sie eine <SecureConversationBootstrap > Element mit der authenticationMode -Attributsatz zur IssuedTokenForCertificate oder IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Nach der <Sicherheit > Element, erstellen Sie eine leere <TcpTransport > Element.Following the <security> element, create an empty <tcpTransport> element.

So erstellen Sie eine benutzerdefinierte Bindung mit gemischtem TCP-Sicherheitsmodus und DuplexverbundTo create a duplex federated custom binding with TCP mixed security mode

  1. In der <Bindungen > Knoten, der die XML-Konfigurationsdatei erstellen eine <CustomBinding > Element.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. Innerhalb der <CustomBinding > Element, erstellen Sie eine <Bindung > Element mit der name -Attributsatz zur FederationDuplexTcpTransportSecurityWithMessageCredentialBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexTcpTransportSecurityWithMessageCredentialBinding.

  3. Innerhalb der <Bindung > Element, erstellen Sie eine <Sicherheit > Element mit der authenticationMode -Attributsatz zur SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. Innerhalb der <Sicherheit > Element, erstellen Sie eine <SecureConversationBootstrap > Element mit der authenticationMode -Attributsatz zur IssuedTokenForCertificate oder IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Nach der <Sicherheit > Element, erstellen Sie eine leere <SslStreamSecurity > Element.Following the <security> element, create an empty <sslStreamSecurity> element.

  6. Nach der <SslStreamSecurity > Element, erstellen Sie eine leere <TcpTransport > Element.Following the <sslStreamSecurity> element, create an empty <tcpTransport> element.

CodebeispielCode Sample

Beispiel mit drei BindungenSample with 3 Bindings

  1. Fügen Sie den folgenden Code in die Konfigurationsdatei ein:Insert the following code into your configuration file.

BeispielExample

<bindings>  
   <customBinding>  
      <binding name="FederationDuplexHttpMessageSecurityBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated" />  
          </security>  
          <compositeDuplex />  
          <oneWay />  
          <httpTransport />  
       </binding>  
<!-- duplex over https is not supported -->  
       <binding name="FederationDuplexTcpMessageSecurityBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated" />  
          </security>  
          <tcpTransport />  
       </binding>              
       <binding name="FederationDuplexTcpTransportSecurityWithMessageCredentialsBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenOverTransport" />  
          </security>  
<!-- requireClientCertificate = true or <windowsStreamSecurity /> can be used, but does not make sense for most scenarios -->  
          <sslStreamSecurity />  
          <tcpTransport />  
       </binding>              
    </customBinding>  
</bindings>