Какую правильную привязку WCF использовать? - PullRequest
1 голос
/ 20 марта 2012

У меня есть следующие критерии, которые помогут мне выбрать привязку WCF Http. Мои услуги должны:

  1. развернуто в интрасети поддержка олицетворения / делегирования
  2. быть совместимым с клиентами, использующими неизвестную технологию
  3. поддержка потока транзакций между клиентом и серверами
  4. не по возможности использовать сертификаты (отменяет режим безопасности «Транспорт»)

Нам нужно выбрать между basicHttpBinding и wsHttpBinding .

Вот несколько заметок и вопросов по трем пунктам:

  1. Я полагаю, что wsHttpBinding с режимом безопасности «Сообщение» и «Windows» clientCredentialType позволил бы мне выполнить делегирование.
  2. Конфигурация безопасности, выбранная в пункте 1. для реализации делегирования, кажется, делает совместимость сложной для поддержки, я прав? Стандарты WS- * (wsHttpBinding) определенно совместимы, но в сочетании с безопасностью «Сообщение» и учетными данными «Windows» может ли любой WS- * -совместимый клиент вызывать мои службы?
  3. Я полагаю, что wsHttpBinding является способом поддержки потока транзакций?
  4. Использование безопасности «Сообщение» без сертификатов в нашей ситуации кажется проще?

Заранее спасибо

1 Ответ

1 голос
/ 21 марта 2012

Если вы хотите поддерживать поток транзакций, вам нужно использовать wsHttpBinding. basicHttpBinding - это просто веб-служба XML basic . MS утверждает, что поддерживает Базовый профиль WS-I v1.1, но больше похож на v1.2, так как вы можете использовать MTOM с этой привязкой.

Оба имеют высокую степень взаимодействия: wsHttpBinding является реализацией многочисленных стандартов WS- *; то, что он не поддерживает, - старые клиенты SOAP-only. Это включает любого, кто использует ссылку на веб-сервис в стиле .NET 2.0, и множество форм SOAP-прокси на основе Java.

С безопасностью вы начинаете получать больше преимуществ от отображения wsHttpBinding. BasicHttpBinding не может выполнять учетные данные Windows, хотя, как вы заметили, это ограничит вашу совместимость. Я подозреваю, что вам будет очень трудно аутентифицировать клиентов, отличных от Windows, с использованием учетных данных Windows, но, как вы указали, это единственный способ добиться олицетворения. Для клиентов, не являющихся WCF, работающих в Windows, вам может повезти больше, поскольку клиент все еще может получить доступ к токену аутентификации вошедшего в систему пользователя.

Лучший способ увидеть, как ваши режимы безопасности будут влиять на клиентов, не являющихся WCF, - это опубликовать привязки для вашей службы и запустить для них инструмент Java wsimport; если это может привести к созданию рабочего прокси из вашего WSDL, то вы сможете использовать службу с любого клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...