NetTcpBinding wcf службы с удаленным доступом и транспортной безопасности? - PullRequest
1 голос
/ 17 февраля 2010

Я борюсь с проблемой WCF, связанной с разрешением имен, или с чем-то вроде этого. Когда я использую сервис wcf (netTcpBinding) на сервере приложений через веб-приложение на веб-сервере, он не работает. Хорошо, это не работает в большинстве ситуаций. Если вы обращаетесь к веб-приложению с самого веб-сервера, используя localhost или 127.0.0.1, оно работает. Однако доступ к нему через веб-сервер через другой клиентский компьютер или локальный доступ к веб-приложению на веб-сервере с использованием имени хоста или IP-адреса не работает. В обоих случаях вы получите ошибку прерванного соединения сокета.

Что делает его более интересным, так это то, что переключение всей системы безопасности на «нет» в отличие от «транспорта» решает проблему.

Мой вопрос: возможно ли получить доступ к службам wcf через ваш веб-сервер и при этом использовать безопасность транспорта? Или это ошибка / спроектированное поведение?

Большое спасибо за понимание, Стив

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011
  1. Опцией безопасности NetTcpBinding по умолчанию является Аутентификация Kerberos / Windows. Если ваш клиент и сервис находятся не в одном домене, он не будет работать. Возможно, вам придется взглянуть на аутентификацию на основе сертификатов.

  2. Если ваша служба работает под учетной записью домена, попробуйте изменить ее на LocalService или NetworkService, чтобы посмотреть, решит ли она проблему.

1 голос
/ 17 февраля 2010

Безопасность транспорта обычно работает только точка-точка, когда клиент подключается напрямую к серверу.

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

Как правило, для интернет-сценариев безопасность транспорта недопустима - используйте Message Security для этих случаев.

Я не уверен на 100%, почему соединение не будет работать вообще, но в любом случае, если вы не находитесь за корпоративным брандмауэром, я бы не стал использовать netTcp с безопасностью транспорта в таком сценарии.

Не могли бы вы добавить свой серверный конфиг (что-нибудь внутри <system.serviceModel>) к своему вопросу, чтобы увидеть, как вы настраиваете безопасность транспорта?

...