Vorgehensweise: Erstellen einer Bindung mit Duplexverbund

WSFederationHttpBinding unterstützt lediglich Datagramm- sowie Anforderung\/Antwort-Nachrichtenaustauschverträge.Für die Verwendung des Duplexnachrichtenaustauschvertrags muss eine benutzerdefinierte Bindung erstellt werden.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.Beispielcode mit allen drei Bindungen finden Sie am Ende dieses Themas.

Die Bindung kann auch im Code erstellt werden.Eine Beschreibung des zu erstellenden Stapels von Bindungselementen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement.

So erstellen Sie eine benutzerdefinierte Bindung mit HTTP und Duplexverbund

  1. Erstellen Sie im <Bindungen><customBinding>-Element.

  2. Erstellen Sie innerhalb des <customBinding><Bindung>name``-Element, und legen Sie dessen FederationDuplexHttpMessageSecurityBinding-Attribut auf fest.

  3. Erstellen Sie innerhalb des <Bindung><Sicherheit>authenticationMode``-Element, und legen Sie dessen SecureConversation-Attribut auf fest.

  4. Erstellen Sie innerhalb des <Sicherheit><secureConversationBootstrap>authenticationMode``-Element, und legen Sie dessen IssuedTokenForCertificate``-Attribut auf IssuedTokenForSslNegotiated oder auf fest.

  5. Erstellen Sie nach dem <Sicherheit><compositeDuplex>-Element.

  6. Erstellen Sie nach dem <compositeDuplex><oneWay>-Element.

  7. Erstellen Sie nach dem <oneWay><httpTransport>-Element.

So erstellen Sie eine benutzerdefinierte Bindung mit TCP-Nachrichtensicherheitsmodus und Duplexverbund

  1. Erstellen Sie im <oneWay><oneWay>-Element.

  2. Erstellen Sie innerhalb des <oneWay><oneWay>name``-Element, und legen Sie dessen FederationDuplexTcpMessageSecurityBinding-Attribut auf fest.

  3. Erstellen Sie innerhalb des <oneWay><Sicherheit>authenticationMode``-Element, und legen Sie dessen SecureConversation-Attribut auf fest.

  4. Erstellen Sie innerhalb des <Sicherheit><secureConversationBootstrap>authenticationMode``-Element, und legen Sie dessen IssuedTokenForCertificate``-Attribut auf IssuedTokenForSslNegotiated oder auf fest.

  5. Erstellen Sie nach dem <Sicherheit><tcpTransport>-Element.

So erstellen Sie eine benutzerdefinierte Bindung mit gemischtem TCP-Sicherheitsmodus und Duplexverbund

  1. Erstellen Sie im <oneWay><oneWay>-Element.

  2. Erstellen Sie innerhalb des <oneWay><oneWay>name``-Element, und legen Sie dessen FederationDuplexTcpTransportSecurityWithMessageCredentialBinding-Attribut auf fest.

  3. Erstellen Sie innerhalb des <oneWay><Sicherheit>authenticationMode``-Element, und legen Sie dessen SecureConversation-Attribut auf fest.

  4. Erstellen Sie innerhalb des <Sicherheit><secureConversationBootstrap>authenticationMode``-Element, und legen Sie dessen IssuedTokenForCertificate``-Attribut auf IssuedTokenForSslNegotiated oder auf fest.

  5. Erstellen Sie nach dem <Sicherheit><sslStreamSecurity>-Element.

  6. Erstellen Sie nach dem <sslStreamSecurity><tcpTransport>-Element.

Codebeispiel

Beispiel mit drei Bindungen

  1. Fügen Sie den folgenden Code in die Konfigurationsdatei ein:

Beispiel


<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>