FaultContractAttribute.ProtectionLevel Propriété

Définition

Spécifie le niveau de protection que l'erreur SOAP requiert de la liaison.

public:
 property System::Net::Security::ProtectionLevel ProtectionLevel { System::Net::Security::ProtectionLevel get(); void set(System::Net::Security::ProtectionLevel value); };
public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
member this.ProtectionLevel : System.Net.Security.ProtectionLevel with get, set
Public Property ProtectionLevel As ProtectionLevel

Valeur de propriété

Une des valeurs de l'objet ProtectionLevel. La valeur par défaut est None.

Remarques

Utilisez la propriété FaultDescription.ProtectionLevel pour spécifier le degré auquel la liaison doit effectuer un chiffrement, une signature ou les deux, lors de l'envoi de l'erreur SOAP. Il est fortement recommandé que l'erreur d'une opération détermine explicitement les spécifications de niveau de protection de la sécurité sur le contrat. Le niveau de protection par défaut est ProtectionLevel.None, ce qui signifie que le message d’erreur SOAP que vous définissez ne nécessite pas de chiffrement ou de signature numérique (bien que votre liaison puisse fournir cette prise en charge si elle est configurée pour le faire). Si un message d’erreur contient des informations sensibles ou susceptibles d’entraîner des problèmes de sécurité, il est vivement recommandé de définir la ProtectionLevel propriété sur ProtectionLevel.EncryptAndSign. Pour plus d’informations sur les problèmes de sécurité, consultez Présentation du niveau de protection.

Le comportement de protection à l'exécution est la combinaison des propriétés de niveau de protection qui ont une structure hiérarchique. La définition de la valeur la plus à l'extérieur établit le paramètre par défaut pour toutes les portées plus restreintes, sauf si une valeur différente est définie explicitement pour une portée plus restreinte. Dans ce cas, la valeur externe reste la valeur par défaut pour toutes les portées plus restreintes à l'exception de celles qui sont spécifiquement définies.

Par exemple, si ServiceContractAttribute.ProtectionLevel est défini sur ProtectionLevel.EncryptAndSign et qu’aucune autre étendue plus étroite n’a de paramètres de niveau de protection, tous les messages d’un contrat d’opération sont chiffrés et signés, y compris les messages d’erreur. Toutefois, si l’une de ces opérations a la OperationContractAttribute valeur ProtectionLevel.Sign, les messages de cette opération sont signés, mais tous les autres messages du contrat sont chiffrés et signés, y compris les messages d’erreur.

Les portées auxquelles ces valeurs sont affectées sont les suivantes :

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Propriété MessageContractMemberAttribute.ProtectionLevel sur System.ServiceModel.MessageHeaderAttribute.

Propriété MessageContractMemberAttribute.ProtectionLevel sur System.ServiceModel.MessageBodyMemberAttribute.

Lorsque aucun niveau de protection n’est spécifié explicitement sur le contrat et que la liaison sous-jacente prend en charge la sécurité (au niveau du transport ou du message), le niveau de protection effectif pour l’ensemble du contrat est ProtectionLevel.EncryptAndSign. Si la liaison ne prend pas en charge la sécurité (comme BasicHttpBinding), le System.Net.Security.ProtectionLevel effectif est ProtectionLevel.None pour l'ensemble du contrat. Le résultat est que selon la liaison du point de terminaison, les clients peuvent avoir besoin d’une protection de sécurité au niveau du message ou du transport différente même lorsque le contrat spécifie ProtectionLevel.None.

S’applique à