Comment : créer une liaison personnalisée à l'aide de SecurityBindingElement
Windows Communication Foundation (WCF) contient plusieurs liaisons fournies par le système qui peuvent être configurées mais qui n'offrent pas une souplesse complète lors de la configuration de toutes les options de sécurité prises en charge par WCF. Cette rubrique montre comment créer une liaison personnalisée directement à partir d'éléments de liaison individuels et met en évidence certains des paramètres de sécurité qui peuvent être spécifiés lors de la création d'une liaison de ce type. Pour plus d'informations sur la création de liaisons personnalisées, consultez Extension de liaisons.
Création d'une liaison personnalisée
Dans WCF, toutes les liaisons sont composées d'éléments de liaison. Chaque élément de liaison dérive de la classe BindingElement. Pour les liaisons fournies par le système standard, les éléments de liaison sont créés et configurés automatiquement, bien que vous puissiez personnaliser quelques paramètres de propriétés.
En revanche, pour créer une liaison personnalisée, les éléments de liaison sont créés et configurés, puis une CustomBinding est créée à partir des éléments de liaison.
Pour ce faire, vous ajoutez les éléments de liaison individuels à une collection représentée par une instance de la classe BindingElementCollection, puis vous affectez à la propriété Elements de CustomBinding une valeur égale à cet objet. Vous devez ajouter les éléments de liaison dans l'ordre suivant : flux de transaction, session fiable, sécurité, duplex composite, unidirectionnel, sécurité de flux de données, codage de message et transport. Notez que les éléments de liaison répertoriés ne sont pas tous requis dans chaque liaison.
SecurityBindingElement
Trois éléments de liaison concernent la sécurité au niveau des messages et tous sont dérivés de la classe SecurityBindingElement. Il s'agit de TransportSecurityBindingElement, SymmetricSecurityBindingElement et AsymmetricSecurityBindingElement. Le TransportSecurityBindingElement est utilisé pour assurer une sécurité en mode mixte. Les deux autres éléments sont utilisés lorsque la couche message fournit la sécurité.
D'autres classes sont utilisées lorsque la sécurité au niveau du transport est assurée :
Éléments de liaison requis
Un grand nombre d'éléments de liaison peuvent être combinés dans une liaison. Toutes les combinaisons ne sont pas valides. Cette section décrit les éléments requis qui doivent être présents dans une liaison de sécurité.
Les liaisons de sécurité valides dépendent de nombreux facteurs, notamment :
- Mode de sécurité
- Protocole de transport
- Modèle d'échange de messages (MEP) spécifié dans le contrat
Le tableau suivant indique les configurations des piles d'éléments de liaison valides pour chaque combinaison des facteurs précédents. Notez qu'il s'agit d'exigences minimales. Vous pouvez ajouter d'autres éléments de liaison à la liaison, notamment des éléments de liaison de codage de message et de transaction.
Mode de sécurité | Transport | Contracter le modèle d'échange de messages | ||||
---|---|---|---|---|---|---|
|
|
Datagramme |
Réponse à la demande |
Duplex |
||
Transport |
Https |
|||||
|
|
OneWayBindingElement |
||||
HttpsTransportBindingElement |
HttpsTransportBindingElement |
|||||
|
TCP |
|||||
|
|
OneWayBindingElement |
||||
StreamSecurityBindingElement de SSL ou Windows |
StreamSecurityBindingElement de SSL ou Windows |
StreamSecurityBindingElement de SSL ou Windows |
||||
TcpTransportBindingElement |
TcpTransportBindingElement |
TcpTransportBindingElement |
||||
Message |
Http |
SymmetricSecurityBindingElement |
SymmetricSecurityBindingElement |
SymmetricSecurityBindingElement (mode d'authentification = SecureConversation) |
||
|
CompositeDuplexBindingElement |
|||||
|
|
OneWayBindingElement |
|
OneWayBindingElement |
||
HttpTransportBindingElement |
HttpTransportBindingElement |
HttpTransportBindingElement |
||||
|
Tcp |
SecurityBindingElement |
SecurityBindingElement |
SymmetricSecurityBindingElement (mode d'authentification = SecureConversation) |
||
TcpTransportBindingElement |
TcpTransportBindingElement |
TcpTransportBindingElement |
||||
Mixte (transport avec informations d'identification de message) |
Https |
TransportSecurityBindingElement |
TransportSecurityBindingElement |
|
||
|
|
OneWayBindingElement |
|
|
||
|
HttpsTransportBindingElement |
HttpsTransportBindingElement |
|
|||
|
TCP |
TransportSecurityBindingElement |
SymmetricSecurityBindingElement (mode d'authentification = SecureConversation) |
SymmetricSecurityBindingElement (mode d'authentification = SecureConversation) |
||
|
|
OneWayBindingElement |
||||
StreamSecurityBindingElement de SSL ou Windows |
StreamSecurityBindingElement de SSL ou Windows |
StreamSecurityBindingElement de SSL ou Windows |
||||
TcpTransportBindingElement |
TcpTransportBindingElement |
TcpTransportBindingElement |
Notez qu'il existe de nombreux paramètres configurables sur SecurityBindingElements. Pour plus d'informations, consultez Modes d'authentification SecurityBindingElement.
Pour plus d'informations, consultez Conversations sécurisées et sessions sécurisées.
Procédures
Pour créer une liaison personnalisée qui utilise SymmetricSecurityBindingElement
Créez une instance de la classe BindingElementCollection portant le nom
outputBec
.Appelez la méthode statique M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), qui retourne une instance de la classe SymmetricSecurityBindingElement.
Ajoutez SymmetricSecurityBindingElement à la collection (
outputBec
) en appelant la méthode Add de Collection de la classe BindingElement.Créez une instance de la classe TextMessageEncodingBindingElement et ajoutez-la à la collection (
outputBec
). Cela spécifie le codage utilisé par la liaison.Créez un HttpTransportBindingElement et ajoutez-le à la collection
outputBec
. Cela indique que la liaison utilise le transport HTTP.Créez une liaison personnalisée en créant une instance de la classe CustomBinding et en passant la collection
outputBec
au constructeur.La liaison personnalisée résultante partage un grand nombre des caractéristiques de WSHttpBinding. Elle spécifie la sécurité au niveau du message et les informations d'identification Windows, mais désactive les sessions sécurisées, requiert que les informations d'identification du service soient spécifiées hors bande, et ne chiffre pas de signature. Cette dernière peut être contrôlée uniquement en définissant la propriété MessageProtectionOrder tel qu'indiqué dans l'étape 4. Les deux autres peuvent être contrôlées à l'aide de paramètres sur la liaison standard.
Exemple
Description
L'exemple suivant fournit une fonction complète permettant de créer une liaison personnalisée qui utilise SymmetricSecurityBindingElement.
Code
Voir aussi
Référence
SecurityBindingElement
TransportSecurityBindingElement
SymmetricSecurityBindingElement
CustomBinding
Concepts
Liaisons fournies par le système