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. Für eine Beschreibung des Stapels der Bindungselemente, die Sie erstellen können, siehe Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mithilfe des SecurityBindingElements.

So erstellen Sie eine benutzerdefinierte Bindung mit HTTP und Duplexverbund

  1. Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.

  2. Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das name Attribut auf FederationDuplexHttpMessageSecurityBinding festgelegt ist.

  3. Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessenauthenticationMode Attribut auf SecureConversation gesetzt ist.

  4. Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen authenticationMode-Attribut auf IssuedTokenForCertificate oder IssuedTokenForSslNegotiated gesetzt ist.

  5. Erstellen Sie im Anschluss an das <Sicherheits>element ein leeres <compositeDuplex>-Element.

  6. Erstellen Sie im Anschluss an das <compositeDuplex>-Element ein leeres < oneWay>-Element.

  7. Erstellen Sie im Anschluss an das <oneWay>-Element ein leeres <httpTransport>-Element.

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

  1. Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.

  2. Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das name Attribut auf FederationDuplexTcpMessageSecurityBinding festgelegt ist.

  3. Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessenauthenticationMode Attribut auf SecureConversation gesetzt ist.

  4. Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen authenticationMode-Attribut auf IssuedTokenForCertificate oder IssuedTokenForSslNegotiated gesetzt ist.

  5. Im Anschluss an das <Sicherheits>element erstellen Sie ein leeres <tcpTransport>-Element.

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

  1. Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.

  2. Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das name Attribut auf FederationDuplexTcpTransportSecurityWithMessageCredentialBinding festgelegt ist.

  3. Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessenauthenticationMode Attribut auf SecureConversation gesetzt ist.

  4. Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen authenticationMode-Attribut auf IssuedTokenForCertificate oder IssuedTokenForSslNegotiated gesetzt ist.

  5. Im Anschluss an das <Sicherheits>element erstellen Sie ein leeres <sslStreamSecurity>-Element.

  6. Im Anschluss an das <sslStream-Sicherheits>element erstellen Sie ein leeres <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>