Во-первых, для этого нет серебряных пуль. У каждого варианта есть свои недостатки. Microsoft рекомендует один из двух вариантов :
- Использовать защиту в режиме сообщений с токенами контекста безопасности с состоянием (с включенным или без безопасного разговора)
- Настройка службы для использования безопасности транспортного уровня
Хотя защита вашего сервиса с использованием безопасности на транспортном уровне защитит человека в промежуточном сценарии, он не защитит вас от скомпрометированного клиента. Таким образом, на самом деле это не надежное решение, и использование маркеров контекста безопасности с состоянием - лучший способ из двух. Это требует некоторых соображений при разработке и развертывании.
Как я уже говорил в моем предыдущем ответе, серебряных пуль для этого нет. Вот еще один вариант (который вы, возможно, уже рассмотрели) с использованием параметров detectReplays, maxClockSkew, replayWindow и replayCacheSize. Хотя я не уверен в его надежности в сценарии WebFarm, он должен работать с учетом базовой операции WCF. Вот краткая статья, которая демонстрирует это . Недостаток этой опции в том, что если у вас клиент в другом часовом поясе, отличном от сервера, вы получите сбои, если ваш maxClockSkew не настроен для учета различий в часовых поясах.