какой тип безопасности необходим для WCF - PullRequest
3 голосов
/ 25 августа 2010

Вот мой сценарий, у меня есть служба WCF, размещенная на внутреннем сервере за брандмауэром.

Клиент - это веб-приложение, которое находится на веб-сервере в DMZ.Брандмауэр открыт на порту между двумя узлами, поэтому соединение с клиентом к серверу может быть установлено.

Какой тип привязки мне нужно использовать для обеспечения безопасности.Вы знаете пример программы или учебника?

Когда я ищу это, все, что я нахожу, - это когда служба используется клиентами через Интернет и использует проверку подлинности Windows или запрашивает имя пользователя и пароль.

Мне просто нужен нашприложение на веб-сервере для общения с веб-сервисом.Любые рекомендации приветствуются.Спасибо!

Кроме того, мой веб-сервис работает как консольное приложение.

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Если вы контролируете оба конца решения (веб-сервер (клиент) в DMZ и консольное приложение (сервер) позади), то почему бы не использовать NetTcpBinding ?

  • Это привязка .NET, поэтому вы не собираетесь на совместимость (но так как у вас есть контроль над обоими концы общения, это звучит вроде это не проблема).
  • Это производительность быстрее, чем WSHttpBinding привязка и приводит к меньшие передаваемые сообщения.

Похоже, вам не нужны учетные данные, передаваемые вместе с сообщением (кроме идентификатора пользователя или идентификатора определенного типа, передаваемого в сообщении), поэтому вы можете использовать эту привязку с помощью TcpClientCredentialType.None.

Здесь - хорошее описание функций безопасности каждой встроенной привязки WCF. Описание NetTcpBinding составляет около 1/3 пути вниз по странице.

Надеюсь, это поможет.

0 голосов
/ 26 августа 2010

Если вы начнете с того, что может быть атаковано, а затем попытаетесь защитить его. 3 obvoius должен был атаковать это:

  • Прослушивание трафика между серверами. Используйте зашифрованный протокол, например, ws-httpbinding с шифрованием сообщений. Привязка Nettcp также хорошо работает здесь.
  • Позвоните в службу WCF напрямую. Удалите MEX, чтобы они не могли получить подпись вашего сервиса, требуют аутентификации на сервисе.
  • Получить информацию об аутентификации для службы с веб-сервера. Не храните имя пользователя и пароль в виде открытого текста в файле конфигурации. Например, используйте контекст безопасности службы, в которой вы работаете.

Это исправляет некоторые вещи, всегда можно сделать больше.

...