Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

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 le sujet suivant la création de liaisons personnalisées, consultez Extension de liaisons.

Attention Attention

SecurityBindingElement ne prend pas en charge la forme de canal IDuplexSessionChannel, qui est la forme de canal par défaut utilisée par le transport TCP lorsque TransferMode a la valeur System.ServiceModel.TransferMode.Buffered. Vous devez définir TransferMode à System.ServiceModel.TransferMode.Streamed pour utiliser SecurityBindingElement dans ce scénario.

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, encodage de message et transport. Notez que les éléments de liaison répertoriés ne sont pas tous requis dans chaque liaison.

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 :

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 d'encodage de message et de transaction.

Mode de sécurité

Transport

Contracter le modèle d'échange de messages

Datagram

Request Reply

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, consultezModes d'authentification SecurityBindingElement.

Pour plus d'informations, consultezConversations sécurisées et sessions sécurisées.

Pour créer une liaison personnalisée qui utilise SymmetricSecurityBindingElement

  1. Créez une instance de la classe BindingElementCollection portant le nom outputBec.

  2. Appelez la méthode statique M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true), qui retourne une instance de la classe SymmetricSecurityBindingElement.

  3. Ajoutez SymmetricSecurityBindingElement à la collection (outputBec) en appelant la méthode Add de Collection<T> de la classe BindingElement.

  4. Créez une instance de la classe TextMessageEncodingBindingElement et ajoutez-la à la collection (outputBec). Cela spécifie l'encodage utilisé par la liaison.

  5. Créez un HttpTransportBindingElement et ajoutez-le à la collection outputBec. Cela indique que la liaison utilise le transport HTTP.

  6. Créez une liaison personnalisée en créant une instance de la classe CustomBinding et en passant la collection outputBec au constructeur.

  7. 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. La dernière ne peut être contrôlée que par la définition de la propriété MessageProtectionOrder, tel qu'indiqué à l'étape 4. Les deux autres peuvent être contrôlées à l'aide de paramètres sur la liaison standard.

Description

L'exemple suivant fournit une fonction complète permettant de créer une liaison personnalisée qui utilise SymmetricSecurityBindingElement.

Code

// Create an empty CustomBinding to populate
CustomBinding binding = new CustomBinding();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
    SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
binding.Elements.Add(ssbe);
binding.Elements.Add(new TextMessageEncodingBindingElement());
binding.Elements.Add(new HttpTransportBindingElement());
return new CustomBinding(binding);


Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.