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

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

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

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

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

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

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

Каждая привязка в WCF существует в двух видах: в виде API и в виде элемента XML, используемого в файле конфигурации. Например, для привязки WSHttpBinding (API) имеется эквивалентный элемент wsHttpBinding Element.

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

BasicHttp

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

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

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

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

  • Базовый профиль Basic Profile, определенный в спецификации взаимодействия веб-служб 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 Element.

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

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

  • WS-Security.

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

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

WSDualHttpBinding

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

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

  • Для надежности реализован обмен сообщениями WS-Reliable Messaging.

  • Для транспортной безопасности и проверки подлинности реализована спецификация WS-Security.

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

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

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

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

  • Параметры привязки для:

    • предоставления учетных данных службы, получаемых клиентом по внештатному каналу;

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

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

NetTcpBinding

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

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

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

  • Для безопасности передачи и проверки подлинности используется безопасность Windows.

  • Для транспорта используется протокол TCP.

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

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

Дополнительно возможны:

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

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

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

NetNamedPipeBinding

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

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

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

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

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

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

Дополнительно возможны:

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

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

MsmqIntegrationBinding

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

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

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

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

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

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

NetMsmqBinding

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

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

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

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

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

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

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

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

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

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

WSFederationHttpBinding

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

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

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

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

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

Функции привязок

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

Параметр Функции

Транспорт

Проверка подлинности сервера

Проверка подлинности клиента

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

Взаимодействие

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

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

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

Приложения с большой задержкой

Повторное шифрование по нескольким участкам ретрансляции

Сообщение

Проверка подлинности сервера

Проверка подлинности клиента

Сквозная безопасность

Взаимодействие

Утверждения с широкими функциональными возможностями

Федерация

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

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

Служба удостоверения/отметки времени

Приложения с большой задержкой

Сохраняемость сигнатур сообщений

TransportWithMessageCredential

Проверка подлинности сервера

Проверка подлинности клиента

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

Взаимодействие

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

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

Утверждения клиентов с широкими функциональными возможностями

Федерация

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

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

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

Приложения с большой задержкой

Повторное шифрование по нескольким участкам ретрансляции

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

Привязка Поддержка режима Transport Поддержка режима Message Поддержка режима TransportWithMessageCredential

BasicHttpBinding

Да

Да

Да

WSHttpBinding

Да

Да

Да

WSDualHttpBinding

Нет

Да

Нет

NetTcpBinding

Да

Да

Да

NetNamedPipeBinding

Да

Нет

Нет

NetMsmqBinding

Да

Да

Нет

MsmqIntegrationBinding

Да

Нет

Нет

wsFederationHttpBinding

Нет

Да

Да

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

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

Тип Описание

None

Указывает, что клиенту не требуется предоставлять учетные данные. Это означает, что клиент является анонимным.

Basic

Обычная проверка подлинности. Дополнительные сведения см. в разделе в документе "RFC 2617 – HTTP Authentication: Basic and Digest Authentication" (RFC 2617 – Проверка подлинности HTTP: обычная проверка подлинности и дайджест-проверка подлинности) по ссылке https://go.microsoft.com/fwlink/?LinkId=84023.

Digest

Дайджест-проверка подлинности. Дополнительные сведения см. в разделе в документе "RFC 2617 – HTTP Authentication: Basic and Digest Authentication" (RFC 2617 – Проверка подлинности HTTP: обычная проверка подлинности и дайджест-проверка подлинности) по ссылке https://go.microsoft.com/fwlink/?LinkId=84023.

NTLM

Проверка подлинности NTLM (NT LAN Manager).

Windows

Проверка подлинности Windows.

Certificate

Проверка подлинности производится с использованием сертификата.

IssuedToken

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

Учетные данные клиента в привязках в режиме Message

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

Тип Описание

None

Позволяет службе взаимодействовать с анонимными клиентами.

Windows

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

UserName

Позволяет службе запрашивать проверку подлинности клиента на основе учетных данных типа "имя пользователя". Обратите внимание, что если задан режим безопасности TransportWithMessageCredential, WCF не поддерживает отправку дайджеста пароля или создание ключей с помощью пароля и использование таких ключей для режима безопасности Message. Таким образом, WCF принудительно задает безопасность транспорта при использовании учетных данных типа "имя пользователя".

Certificate

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

IssuedToken

Позволяет службе использовать службу маркеров безопасности для создания пользовательского маркера.

См. также

Основные понятия

Общие сведения о безопасности
Выбор типа учетных данных
Поведения безопасности в WCF

Другие ресурсы

Защита служб и клиентов
Возможности безопасности при использовании пользовательских привязок
Модель безопасности для Windows Server App Fabric