У меня были плохие новости для вас.Внедренная реализация безопасности не может сделать это , и я не уверен, как расширить WCF для поддержки этого, если вы не пишете все материалы WS-Security с нуля.WCF очень расширяемый, за исключением сценариев, в которых вы хотите расширить уже реализованные протоколы - эти классы в основном запечатаны / внутренние и не могут быть использованы повторно.
Вся проблема была бы совершенно иной, если бы эти элементы были SOAP-заголовками, а не элементами тела.
Редактировать:
Я снова проверил все предоставленное вами сообщение SOAP и обнаружил две другие проблемы.
- Я сомневаюсь в уровне безопасности, который обеспечивает ваша служба.Он не показывает простой текстовый пароль, но это может быть все.Сокрытие пароля - это не только безопасность, которая вам нужна, потому что, если безопасность не реализована правильно, злоумышленник может просто взять все ваше сообщение (зашифрованное как есть) и снова отправить его со своего компьютера.Если служба настроена неправильно, она обработает этот запрос, как и любой другой.Это называется повторной атакой, и основной защитой от этой атаки является отметка времени, но поскольку ваше сообщение не подписано, злоумышленник может изменить значение отметки времени по своему усмотрению.В элементе
EncryptedKey
может быть дополнительный защитный механизм, но это трудно сказать из самого сообщения. - Скорее всего, WCF не сможет обработать сообщение, даже если служба шифрует все тело.Для безопасности «из коробки» необходимы подписи - отметка времени должна быть подписана (по причине, указанной выше), а части сообщения могут быть подписаны или зашифрованы и подписаны, но не только зашифрованы.Подписание зашифрованной части гарантирует, что злоумышленник не заменит опубликованные данные другими.