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.