Использовать BasicHttpBinding - я думаю, это можно настроить для передачи пользователю
учетные данные незашифрованы с использованием TransportCredentialOnly. Тем не мение,
несколько обеспокоен тем, что BasicHttpBinding предназначен для наследства
подход и менее совместим с другими технологиями
Обычная HTTP-аутентификация - это наиболее совместимый встроенный механизм аутентификации, который вы можете использовать, однако он отправляет пароли в виде простого текста. Кроме того, использование может иметь некоторые небольшие сложности, если вы размещаете свои службы в IIS и не хотите использовать учетные записи Windows для проверки подлинности.
SecurityMode = Нет - не используйте учетные данные. Наши охранники
недовольны этим, поскольку злоумышленники на внешних веб-серверах могут
получить доступ к любым услугам, которые им нравятся
Обеспечение безопасности услуг в корпоративной среде является обязательным.
Перейдите на использование другого типа аутентификации, например, Windows
полномочия - опасайтесь, что это потенциально большое изменение в том, как мы
В настоящее время работают эти службы, а также есть ли у нас доступ к
сервер каталогов из DMZ.
Как только вы начнете использовать учетные данные Windows, вам придется использовать одинаковые или доверенные домены для обеих сетей.
Гораздо лучшим вариантом в этом случае являются сертификаты (CertificateOverTransport
пользовательский режим безопасности). Проблема с обычной аутентификацией и аутентификацией UserNameToken в WCF заключается в том, что имя пользователя и пароль передаются в виде простого текста. Это также причина, почему WCF по умолчанию (и до .NET 4 всегда) требует шифрования либо через HTTPS, либо через безопасность сообщений. Любой злоумышленник (в том числе внутренние злоумышленники, которые являются гораздо более опасными) может прослушивать связь либо в демилитаризованной зоне, либо во внутренней сети и получать все учетные данные, необходимые для доступа к вашим услугам.
Как только вы начнете использовать сертификаты, сам сертификат с закрытым ключом будет надежно храниться на сервере в DMZ - вы даже можете сделать сертификат не экспортируемым. Как только приложение DMZ вызывает вашу внутреннюю службу, оно добавляет информацию об используемом сертификате в заголовок SOAP и подписывает метку времени сообщения. Любой может проверить подпись (и подтвердить личность вызывающего абонента), но только владелец личного ключа может создать ее = даже если злоумышленник получит доступ к сетевому соединению, он не сможет украсть личность. Существуют другие механизмы безопасности, связанные с сертификатами.
UserNameToken (как вы использовали в WSE) поддерживает зашифрованные пароли, но в WCF эта функция не реализована.
Чтобы не запрашивать шифрование для UserNameOverTransport
или CertificateOverTransport
, необходимо использовать пользовательское связывание (работает только в .NET 4 - для предыдущей версии требуется несколько КБ от MS).