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
Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.
Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das
name
Attribut aufFederationDuplexHttpMessageSecurityBinding
festgelegt ist.Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessen
authenticationMode
Attribut aufSecureConversation
gesetzt ist.Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen
authenticationMode
-Attribut aufIssuedTokenForCertificate
oderIssuedTokenForSslNegotiated
gesetzt ist.Erstellen Sie im Anschluss an das <Sicherheits>element ein leeres <compositeDuplex>-Element.
Erstellen Sie im Anschluss an das <compositeDuplex>-Element ein leeres < oneWay>-Element.
Erstellen Sie im Anschluss an das <oneWay>-Element ein leeres <httpTransport>-Element.
So erstellen Sie eine benutzerdefinierte Bindung mit TCP-Nachrichtensicherheitsmodus und Duplexverbund
Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.
Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das
name
Attribut aufFederationDuplexTcpMessageSecurityBinding
festgelegt ist.Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessen
authenticationMode
Attribut aufSecureConversation
gesetzt ist.Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen
authenticationMode
-Attribut aufIssuedTokenForCertificate
oderIssuedTokenForSslNegotiated
gesetzt ist.Im Anschluss an das <Sicherheits>element erstellen Sie ein leeres <tcpTransport>-Element.
So erstellen Sie eine benutzerdefinierte Bindung mit gemischtem TCP-Sicherheitsmodus und Duplexverbund
Erstellen Sie im Knoten <Bindungen> der Konfigurationsdatei ein <customBinding>-Element.
Erstellen Sie im <customBinding-Element> ein <Bindungs>element, wobei das
name
Attribut aufFederationDuplexTcpTransportSecurityWithMessageCredentialBinding
festgelegt ist.Erstellen Sie innerhalb des <Bindungs>elements ein <Sicherheit>selement, dessen
authenticationMode
Attribut aufSecureConversation
gesetzt ist.Erstellen Sie innerhalb des <Sicherheits>elements ein <secureConversationBootstrap>-Element, dessen
authenticationMode
-Attribut aufIssuedTokenForCertificate
oderIssuedTokenForSslNegotiated
gesetzt ist.Im Anschluss an das <Sicherheits>element erstellen Sie ein leeres <sslStreamSecurity>-Element.
Im Anschluss an das <sslStream-Sicherheits>element erstellen Sie ein leeres <tcpTransport>-Element.
Codebeispiel
Beispiel mit drei Bindungen
- 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>