Considérations sur la sécurité pour les sessions sécurisées
Lors de l'implémentation de sessions sécurisées, vous devez prendre en compte les éléments suivants, lesquels ont des répercussions sur la sécurité. Pour plus d'informations sur les problèmes liés à la sécurité, consultez Considérations sur la sécurité et Meilleures pratiques pour la sécurité dans WCF.
Sessions sécurisées et métadonnées
Lorsqu'une session sécurisée est établie et que la propriété RequireCancellation a la valeur false, Windows Communication Foundation (WCF) envoie une assertion mssp:MustNotSendCancel dans le cadre des métadonnées du document WSDL (Web Services Description Language) du 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 a la valeur true, WCF n'envoie pas d'assertion mssp:MustNotSendCancel dans le cadre du 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 ServiceModel Metadata Utility Tool (Svcutil.exe), le code client réagit de façon adéquate à la présence ou 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 stipule que wsse:SecurityTokenReference est un élément facultatif qui référence le 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é partagée/secret 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
Tâches
Comment : désactiver des sessions sécurisées sur une classe WSFederationHttpBinding
Concepts
Meilleures pratiques pour la sécurité dans WCF