Поделиться через


Привязки и безопасность

Предоставляемые системой привязки, включенные в Windows Communication Foundation (WCF), позволяют быстро программировать приложения WCF. За исключением одного исключения, все привязки включают схему безопасности по умолчанию. В этом разделе вы можете выбрать правильную привязку для ваших потребностей в безопасности.

Общие сведения о безопасности WCF см. в разделе "Обзор безопасности". Дополнительные сведения о программировании WCF с помощью привязок см. в разделе "Программирование WCF Security".

Если вы уже выбрали привязку, вы можете узнать больше о поведении во время выполнения, связанном с безопасностью, в разделе Поведение безопасности.

Некоторые функции безопасности не программируются с помощью привязок, предоставляемых системой. Дополнительные сведения об использовании пользовательской привязки см. в разделе "Возможности безопасности" с пользовательскими привязками.

Функции безопасности привязок

WCF включает ряд системных привязок, удовлетворяющих большинству потребностей. Если определенная привязка недостаточна, можно также создать пользовательскую привязку. Список системных привязок см. в разделеSystem-Provided Привязки. Дополнительные сведения о пользовательских привязках см. в разделе "Пользовательские привязки".

Каждая привязка в WCF имеет две формы: как API и в качестве XML-элемента, используемого в файле конфигурации. Например, api WSHttpBinding имеет аналог wsHttpBinding<>.

В следующем разделе перечислены обе формы для каждой привязки и сводка функций безопасности.

BasicHttp

В коде используйте класс BasicHttpBinding; а в конфигурации — <basicHttpBinding>.

Эта привязка предназначена для использования с несколькими существующими технологиями, включая следующие:

  • ASP.NET веб-службы (ASMX), версия 1.

  • Приложения улучшения веб-службы (WSE).

  • Базовый профиль, определенный в спецификации взаимодействия веб-служб (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38955).

  • Базовый профиль безопасности, определенный в WS-I.

По умолчанию эта привязка не является безопасной. Он предназначен для взаимодействия со службами ASMX. Если безопасность включена, привязка предназначена для простого взаимодействия с механизмами безопасности служб IIS, такими как обычная проверка подлинности, дайджест и встроенная безопасность Windows. Дополнительные сведения см. в разделе "Обзор безопасности транспорта". Эта привязка поддерживает следующее:

  • Безопасность транспорта HTTPS.

  • Базовая аутентификация HTTP.

  • WS-Security.

Дополнительные сведения см. в разделе BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialType, и BasicHttpSecurityMode.

WSHttpBinding

В коде используйте класс WSHttpBinding; в конфигурации используйте <wsHttpBinding>.

По умолчанию эта привязка реализует спецификацию WS-Security и обеспечивает взаимодействие со службами, реализующими спецификации WS-* . Он поддерживает следующее:

  • Безопасность транспорта HTTPS.

  • WS-Security.

  • Защита транспорта HTTPS с использованием безопасности учетных данных SOAP-сообщения для проверки подлинности вызывающего клиента.

Дополнительные сведения см. в разделе WSHttpSecurity, , MessageSecurityOverHttpMessageCredentialTypeSecurityMode, , HttpTransportSecurity, HttpClientCredentialTypeи HttpProxyCredentialType.

WSDualHttpBinding (ВСДуалHttpБиндинг)

В коде используйте класс WSDualHttpBinding; в конфигурации используйте <wsDualHttpBinding>.

Эта привязка предназначена для использования двусторонних служебных приложений. Эта привязка реализует спецификацию WS-Security для безопасности передачи на основе сообщений. Услуги транспортной безопасности недоступны. По умолчанию он предоставляет следующие функции:

  • Реализует обмен сообщениями WS-Reliable для повышения надежности.

  • Реализует WS-Security для обеспечения безопасности передачи данных и аутентификации.

  • Использует HTTP для доставки сообщений.

  • Использует кодировку текстовых и XML-сообщений.

С помощью WS-Security (безопасность уровня сообщений) привязка позволяет настроить следующие параметры:

  • Набор алгоритмов безопасности для определения криптографического алгоритма.

  • Параметры привязки для следующих элементов:

    • Предоставление учетных данных для доступа к службе, доступных вне основного канала на стороне клиента.

    • Предоставление учетных данных, согласованных со службой, как часть настройки канала.

Дополнительные сведения см. в разделах WSDualHttpSecurity и WSDualHttpSecurityMode.

NetTcpBinding

В коде используйте класс NetTcpBinding; в конфигурации используйте <netTcpBinding>.

Эта привязка оптимизирована для обмена данными между компьютерами. По умолчанию он имеет следующие характеристики:

  • Реализует безопасность на уровне транспорта.

  • Использует систему безопасности Windows для защиты передачи данных и аутентификации.

  • Использует TCP для транспорта.

  • Реализует кодировку двоичных сообщений.

  • Реализует WS-Reliable обмен сообщениями.

Ниже приведены варианты.

  • Безопасность уровня сообщений (используя WS-Security).

  • Безопасность транспорта с учетными данными сообщения — конфиденциальность и целостность, предоставляемая протоколом TLS по протоколу TCP, и учетные данные для авторизации, предоставляемой WS-Security.

Дополнительные сведения см. в разделе NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcpи MessageCredentialType.

NetNamedPipeBinding

В коде используйте класс NetNamedPipeBinding; в конфигурации используйте <netNamedPipeBinding>.

Эта привязка оптимизирована для межпроцессного взаимодействия (обычно на одном компьютере). По умолчанию эта привязка имеет следующие характеристики:

  • Использует транспортную безопасность для передачи сообщений и проверки подлинности.

  • Использует именованные каналы для доставки сообщений.

  • Реализует кодировку двоичных сообщений.

  • Шифрование и подпись сообщений.

Ниже приведены варианты.

  • Проверка подлинности с помощью безопасности Windows.

Дополнительные сведения см. в статьях NetNamedPipeSecurity, NetNamedPipeSecurityMode и NamedPipeTransportSecurity.

MsmqIntegrationBinding

В коде используйте MsmqIntegrationBinding класс; в конфигурации используйте <msmqIntegrationBinding>.

Эта привязка оптимизирована для создания клиентов и служб WCF, которые взаимодействуют с конечными точками очереди сообщений (MSMQ), отличными от WCF.

По умолчанию эта привязка использует транспортную безопасность и предоставляет следующие характеристики безопасности:

  • Безопасность может быть отключена (Нет).

  • Безопасность транспорта MSMQ (транспорт).

Дополнительные сведения см. в разделах NetMsmqSecurity и NetMsmqSecurityMode.

NetMsmqBinding

В коде используйте класс NetMsmqBinding; в конфигурации используйте <netMsmqBinding>.

Эта привязка предназначена для использования при создании служб WCF, требующих поддержки сообщений в очереди MSMQ.

По умолчанию эта привязка использует транспортную безопасность и предоставляет следующие характеристики безопасности:

  • Безопасность может быть отключена (Нет).

  • Безопасность транспорта MSMQ (транспорт).

  • Безопасность сообщений на основе SOAP (сообщение).

  • Одновременная безопасность транспорта и сообщений (оба).

  • Поддерживаемые типы учетных данных клиента: None, Windows, UserName, Certificate, IssuedToken.

Учетные данные Certificate поддерживаются только когда режим безопасности установлен на Both или Message.

Дополнительные сведения см. в разделах MessageSecurityOverMsmq и MsmqTransportSecurity.

WSFederationHttpBinding

В коде используйте класс WSFederationHttpBinding; в конфигурации используйте <wsFederationHttpBinding>.

По умолчанию эта привязка использует WS-Security (безопасность на уровне сообщений).

Дополнительные сведения см. в разделе "Федерация" WSFederationHttpSecurityи WSFederationHttpSecurityMode.

Пользовательские привязки

Если ни одна из предоставленных системой привязок не соответствует требованиям, можно создать пользовательскую привязку с пользовательским элементом привязки безопасности. Дополнительные сведения см. в разделе "Возможности безопасности с пользовательскими привязками".

Варианты привязки

В следующей таблице приведены сведения о функциях, предлагаемых в параметре режима безопасности, т. е. в нем перечислены доступные функции, если для режима безопасности задано Transportзначение , Messageили TransportWithMessageCredential. Используйте эту таблицу для поиска необходимых функций безопасности приложения.

Настройки Функции
Транспорт Аутентификация сервера

Аутентификация клиента

Безопасность "точка — точка"

Совместимость

Аппаратное ускорение

Высокая пропускная способность

Безопасный брандмауэр

Приложения с высокой задержкой

Повторное шифрование через несколько узлов
Сообщение Аутентификация сервера

Аутентификация клиента

Комплексная безопасность

Совместимость

Расширенные утверждения

Федерация

Многофакторная проверка подлинности

Пользовательские токены

Нотариальная служба/служба временной метки

Приложения с высокой задержкой

Сохраняемость подписей сообщений
ТранспортСУчётнымиДаннымиСообщения Аутентификация сервера

Аутентификация клиента

Безопасность "точка — точка"

Совместимость

Аппаратное ускорение

Высокая пропускная способность

Расширенные утверждения клиента

Федерация

Многофакторная проверка подлинности

Пользовательские токены

Безопасный брандмауэр

Приложения с высокой задержкой

Повторное шифрование через несколько узлов

В следующей таблице перечислены привязки, поддерживающие различные параметры режима. Выберите привязку из таблицы, чтобы создать конечную точку службы.

Привязка Поддержка режима транспорта Поддержка режима сообщения Поддержка функции TransportWithMessageCredential
BasicHttpBinding Да Да Да
WSHttpBinding Да Да Да
WSDualHttpBinding нет Да нет
NetTcpBinding Да Да Да
NetNamedPipeBinding Да нет нет
NetMsmqBinding Да Да нет
MsmqIntegrationBinding Да нет нет
wsFederationHttpBinding нет Да Да

Учетные данные транспорта в привязках

В следующей таблице перечислены типы учетных данных клиента, доступные при использовании либо BasicHttpBinding, либо WSHttpBinding в режиме транспортной безопасности.

Тип Описание
Отсутствует Указывает, что клиенту не нужно представлять учетные данные. Это переводится как анонимный клиент.
Базовый Обычная проверка подлинности. Дополнительные сведения см. в статье RFC 2617 — проверка подлинности HTTP: базовая и дайджест-проверка подлинности, доступные по адресу https://go.microsoft.com/fwlink/?LinkId=84023.
дайджест Аутентификация по дайджесту. Дополнительные сведения см. в статье RFC 2617 — проверка подлинности HTTP: базовая и дайджест-проверка подлинности, доступные по адресу https://go.microsoft.com/fwlink/?LinkId=84023.
NTLM Проверка подлинности NT LAN Manager (NTLM).
Виндоус проверка подлинности Windows.
Сертификат Проверка подлинности, выполненная с помощью сертификата.
ВыданныйТокен Позволяет службе требовать, чтобы клиент прошел аутентификацию с помощью токена, выданного службой токенов безопасности или CardSpace. Дополнительные сведения см. в разделе "Федерация" и "Выданные токены".

Учетные данные клиента сообщения в привязках

В следующей таблице перечислены типы учетных данных клиента, доступные при использовании привязки в режиме безопасности сообщений.

Тип Описание
Отсутствует Позволяет службе взаимодействовать с анонимными клиентами.
Виндоус Позволяет обмениваться сообщениями SOAP в контексте учетных данных Windows, прошедших проверку подлинности.
Имя пользователя Позволяет службе требовать, чтобы клиент прошел проверку подлинности с помощью учетных данных имени пользователя. Обратите внимание, что если для режима безопасности задано значение TransportWithMessageCredential, WCF не поддерживает отправку хэшированного пароля или производных ключей с использованием пароля и применение таких ключей для безопасности режима сообщений. Таким образом, WCF обеспечивает защиту транспорта при использовании учетных данных имени пользователя.
Сертификат Позволяет службе требовать, чтобы клиент прошел проверку подлинности с помощью сертификата.
ВыданныйТокен Позволяет службе использовать службу токенов безопасности для предоставления пользовательского токена.

См. также