Контракт сообщения может указывать, должны ли заголовки и / или тело сообщения иметь цифровую подпись и шифроваться.
Это делается путем установки свойства System.ServiceModel.MessageContractMemberAttribute.ProtectionLevel в MessageHeaderAttribute и MessageBodyMemberAttributeатрибутов.Свойство является перечислением типа System.Net.Security.ProtectionLevel и может иметь значение None (без шифрования или подписи), Sign (только для цифровой подписи) или EncryptAndSign (как для шифрования, так и для цифровой подписи).По умолчанию используется EncryptAndSign.
Чтобы эти функции безопасности работали, необходимо правильно настроить привязку и поведение.Если вы используете эти функции безопасности без надлежащей конфигурации (например, при попытке подписать сообщение без указания учетных данных), во время проверки выдается исключение.
Для заголовков сообщений уровень защиты определяется индивидуально длякаждый заголовок.
Для частей тела сообщения уровень защиты можно рассматривать как «минимальный уровень защиты».Тело имеет только один уровень защиты, независимо от количества частей тела.Уровень защиты тела определяется наивысшей настройкой свойства ProtectionLevel из всех частей тела.Однако вы должны установить уровень защиты каждой части тела на фактический минимальный требуемый уровень защиты.Пожалуйста, смотрите эту статью для более подробных примеров.