Considérations sur la sécurité pour les sessions sécurisées

Vous devez tenir compte des éléments suivants qui affectent la sécurité lors de l'implémentation de sessions sécurisées. Pour plus d’informations sur les considérations de sécurité, consultez Considérations relatives à la sécurité et Meilleures pratiques en matière de sécurité.

Sessions sécurisées et métadonnées

Lorsqu’une session sécurisée est établie et que la propriété RequireCancellation est définie sur false, Windows Communication Foundation (WCF) envoie une assertion mssp:MustNotSendCancel dans le cadre des métadonnées du document WSDL (Web Services Description Language) pour le point de terminaison de service. L'assertion mssp:MustNotSendCancel informe les clients que le service ne répond pas aux demandes d'annulation de session sécurisée. Lorsque la propriété RequireCancellation est définie sur true, WCF n’émet pas d’assertion mssp:MustNotSendCancel dans le document WSDL. Lorsqu'ils n'ont plus besoin de la session sécurisée, les clients doivent envoyer une demande d'annulation au service. Lorsqu’un client est généré à l’aide de l’outil ServiceModel Metadata Utility (Svcutil.exe),le code client réagit de manière appropriée à la présence ou à l’absence de l’assertion mssp:MustNotSendCancel .

Conversations sécurisées et jetons personnalisés

Le mélange de jetons personnalisés et de clés dérivées pose quelques problèmes en raison de la manière dont il est défini dans la spécification WS-SecureConversation. La spécification indique que wsse:SecurityTokenReference est un élément facultatif qui fait référence au jeton dérivé : «/wsc:DerivedKeyToken/wsse:SecurityTokenReference Cet élément facultatif est utilisé pour spécifier le jeton de contexte de sécurité, le jeton de sécurité ou la clé/secret partagé utilisé pour la dérivation. Si cet élément n'est pas spécifié, il est supposé que le destinataire peut déterminer la clé partagée à partir du contexte de message. Si le contexte ne peut pas être déterminé, une erreur telle que wsc:UnknownDerivationSource doit être déclenchée. »

Cela signifie que si vous souhaitez qu'un jeton personnalisé soit dérivé, vous devez encapsuler son type de clause dans un élément SecurityTokenReference. Il est possible de désactiver la dérivation mais la valeur par défaut consiste à dériver les clés. Si vous ne parvenez pas à encapsuler la clé, la sérialisation du jeton de clé dérivé aboutit, mais la tentative de désérialisation de ce jeton lève une exception.

Voir aussi