Привязки и безопасность
Предоставляемые системой привязки, включенные в Windows Communication Foundation (WCF), позволяют быстро программировать приложения WCF. За одним исключением, во всех привязках включена схема безопасности по умолчанию. Этот раздел поможет выбрать привязку, соответствующую требованиям к безопасности.
Общие сведения о безопасности WCF см. в разделе "Обзор безопасности". Дополнительные сведения о программировании WCF с помощью привязок см. в разделе "Программирование WCF Security".
Если вы уже выбрали привязку, вы можете узнать больше о поведении во время выполнения, связанных с безопасностью в поведении безопасности.
Некоторые функции безопасности невозможно запрограммировать с помощью привязок, предоставляемых системой. Дополнительные сведения об использовании пользовательской привязки см. в разделе "Возможности безопасности" с пользовательскими привязками.
Функции безопасности привязок
WCF включает ряд системных привязок, удовлетворяющих большинству потребностей. Если определенная привязка не удовлетворяет всем необходимым требованиям, можно также создать пользовательскую привязку. Список предоставленных системой привязок см. в разделе "Предоставленные системой привязки". Дополнительные сведения о пользовательских привязках см. в разделе "Пользовательские привязки".
Каждая привязка в WCF имеет две формы: как API и в качестве XML-элемента, используемого в файле конфигурации. Например, api WSHttpBinding
имеет аналог wsHttpBinding<>.
В следующем подразделе перечисляются обе формы каждой из привязок и приводится краткое описание возможностей безопасности.
BasicHttp
В коде BasicHttpBinding используйте класс; в конфигурации используйте <basicHttpBinding>.
Эта привязка предназначена для использования с различными существующими технологиями, включая перечисленные ниже.
Веб-службы ASP.NET (ASMX), версия 1.
Приложения расширений веб-служб (WSE).
Базовый профиль, определенный в спецификацииhttps://go.microsoft.com/fwlink/?LinkId=38955 взаимодействия веб-служб (WS-I).
Базовый профиль безопасности, определенный в спецификации 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, , SecurityModeMessageSecurityOverHttpMessageCredentialType, , HttpTransportSecurity, HttpClientCredentialTypeи HttpProxyCredentialType.
WSDualHttpBinding
В коде WSDualHttpBinding используйте класс; в конфигурации используйте <wsDualHttpBinding>.
Эта привязка предназначена для обеспечения приложений дуплексных служб. Эта привязка реализует спецификацию WS-Security для обеспечения безопасности передачи на основе сообщений. Безопасность транспорта отсутствует. По умолчанию предусмотрены следующие возможности.
Для надежности реализован обмен сообщениями WS-Reliable Messaging.
Для транспортной безопасности и проверки подлинности реализована спецификация WS-Security.
Для доставки сообщений используется протокол HTTP.
Используется кодирование текстовых сообщений/сообщений XML.
Используя WS-Security (безопасность на уровне сообщений), эта привязка позволяет настроить следующие параметры:
Набор алгоритмов безопасности для определения алгоритма шифрования.
Параметры привязки для:
предоставления учетных данных службы, получаемых клиентом по внештатному каналу;
предоставления учетных данных службы, согласованных со службой в процессе настройки канала.
Дополнительные сведения см. в разделах WSDualHttpSecurity и WSDualHttpSecurityMode.
NetTcpBinding
В коде NetTcpBinding используйте класс; в конфигурации используйте <netTcpBinding>.
Эта привязка оптимизирована для обмена данными между компьютерами. По умолчанию она имеет следующие характеристики:
Реализуется безопасность на транспортном уровне.
Для безопасности передачи и проверки подлинности используется безопасность Windows.
Для транспорта используется протокол TCP.
Реализуется кодирование двоичных сообщений.
Реализуется обмен сообщениями WS-Reliable Messaging.
Дополнительно возможны:
Безопасность на уровне сообщений (с использованием WS-Security).
Безопасность транспорта с учетными данными сообщений - конфиденциальность и целостность обеспечиваются протоколом TLS через TCP, а учетные данные для проверки подлинности обеспечиваются спецификацией WS-Security.
Дополнительные сведения см. в разделе NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcpи MessageCredentialType.
NetNamedPipeBinding
В коде NetNamedPipeBinding используйте класс; в конфигурации используйте <netNamedPipeBinding>.
Эта привязка оптимизирована для обмена данными между процессами (обычно на одном компьютере). По умолчанию эта привязка имеет следующие характеристики:
Для передачи сообщений и проверки подлинности используется безопасность транспорта.
Для доставки сообщений используются именованные каналы.
Реализуется кодирование двоичных сообщений.
Шифрование и подписывание сообщений.
Дополнительно возможны:
- Проверка подлинности с использованием безопасности Windows.
Дополнительные сведения см. в статьях NetNamedPipeSecurity, NetNamedPipeSecurityMode и NamedPipeTransportSecurity.
MsmqIntegrationBinding
В коде MsmqIntegrationBinding используйте класс; в конфигурации используйте <msmqIntegrationBinding>.
Эта привязка оптимизирована для создания клиентов и служб WCF, которые взаимодействуют с конечными точками очереди сообщений (MSMQ), отличными от WCF.
По умолчанию в этой привязке используется безопасность транспорта и обеспечиваются следующие характеристики безопасности:
Система безопасности может быть отключена (None).
Безопасность транспорта MSMQ (Transport).
Дополнительные сведения см. в разделах NetMsmqSecurity и NetMsmqSecurityMode.
NetMsmqBinding
В коде NetMsmqBinding используйте класс; в конфигурации используйте <netMsmqBinding>.
Эта привязка предназначена для использования при создании служб WCF, требующих поддержки сообщений в очереди MSMQ.
По умолчанию в этой привязке используется безопасность транспорта и обеспечиваются следующие характеристики безопасности:
Система безопасности может быть отключена (None).
Безопасность транспорта MSMQ (Transport).
Безопасность сообщений на основе SOAP (Message).
Одновременное использование безопасности транспорта и безопасности сообщений (Both).
Поддерживаемые типы учетных данных клиента: None, Windows, UserName, Certificate, IssuedToken.
Учетные данные типа Certificate поддерживаются только в том случае, если задан режим безопасности Both или Message.
Дополнительные сведения см. в разделах MessageSecurityOverMsmq и MsmqTransportSecurity.
WSFederationHttpBinding
В коде WSFederationHttpBinding используйте класс; в конфигурации используйте <wsFederationHttpBinding>.
По умолчанию в этой привязке используется спецификация WS-Security (безопасность на уровне сообщений).
Дополнительные сведения см. в разделе "Федерация" WSFederationHttpSecurityи WSFederationHttpSecurityMode.
Пользовательские привязки
Если ни одна из предоставляемых системой привязок не удовлетворяет вашим требованиям, можно создать пользовательскую привязку с пользовательским элементом привязки безопасности. Дополнительные сведения см. в разделе "Возможности безопасности" с пользовательскими привязками.
Функции привязок
В следующей таблице перечислены возможности, обеспечиваемые настройкой режима безопасности; другими словами, перечислены доступные возможности, если для режима безопасности задано значение Transport
, Message
или TransportWithMessageCredential
. Эта таблица поможет найти функции безопасности, необходимые для вашего приложения.
Параметр | Функции |
---|---|
Транспорт | Аутентификация сервера Аутентификация клиента Безопасность типа "точка-точка" Совместимость Аппаратное ускорение Высокая пропускная способность Безопасный брандмауэр Приложения с большой задержкой Повторное шифрование по нескольким участкам ретрансляции |
Сообщение | Аутентификация сервера Аутентификация клиента Комплексная безопасность Совместимость Утверждения с широкими функциональными возможностями Федерация Многофакторная проверка подлинности Пользовательские маркеры Служба удостоверения/метки времени Приложения с большой задержкой Сохраняемость сигнатур сообщений |
TransportWithMessageCredential | Аутентификация сервера Аутентификация клиента Безопасность типа "точка-точка" Совместимость Аппаратное ускорение Высокая пропускная способность Утверждения клиентов с широкими функциональными возможностями Федерация Многофакторная проверка подлинности Пользовательские маркеры Безопасный брандмауэр Приложения с большой задержкой Повторное шифрование по нескольким участкам ретрансляции |
В следующей таблице перечислены привязки, поддерживающие различные параметры режима. Выберите в таблице привязку для использования при создании конечной точки своей службы.
Привязка | Поддержка режима Transport | Поддержка режима Message | Поддержка режима TransportWithMessageCredential |
---|---|---|---|
BasicHttpBinding |
Да | Да | Да |
WSHttpBinding |
Да | Да | Да |
WSDualHttpBinding |
No | Да | No |
NetTcpBinding |
Да | Да | Да |
NetNamedPipeBinding |
Да | No | No |
NetMsmqBinding |
Да | Да | No |
MsmqIntegrationBinding |
Да | No | No |
wsFederationHttpBinding |
No | Да | Да |
Учетные данные транспорта в привязках
В приведенной ниже таблице перечислены типы учетных данных клиента, доступные при использовании привязки BasicHttpBinding
или WSHttpBinding
в режиме безопасности транспорта.
Тип | Описание |
---|---|
Нет | Указывает, что клиенту не требуется предоставлять учетные данные. Это означает, что клиент является анонимным. |
Базовая | Обычная проверка подлинности. Дополнительные сведения см. в статье RFC 2617 — проверка подлинности HTTP: базовая и дайджест-проверка подлинности, доступные по адресу https://go.microsoft.com/fwlink/?LinkId=84023. |
Дайджест | Дайджест-проверка подлинности. Дополнительные сведения см. в статье RFC 2617 — проверка подлинности HTTP: базовая и дайджест-проверка подлинности, доступные по адресу https://go.microsoft.com/fwlink/?LinkId=84023. |
NTLM | Проверка подлинности NTLM (NT LAN Manager). |
Windows | Проверка подлинности Windows. |
Сертификат | Проверка подлинности производится с использованием сертификата. |
IssuedToken | Позволяет службе требовать, чтобы клиент прошел проверку подлинности с помощью маркера, выданного службой маркеров безопасности или CardSpace. Дополнительные сведения см. в разделе "Федерация" и "Выданные токены". |
Учетные данные клиента в привязках в режиме Message
В приведенной ниже таблице перечислены типы учетных данных клиента, доступные при использовании привязки в режиме безопасности Message.
Тип | Описание |
---|---|
Нет | Позволяет службе взаимодействовать с анонимными клиентами. |
Windows | Позволяет проводить обмен сообщениями SOAP, если выполнена проверка подлинности с помощью учетных данных Windows. |
UserName | Позволяет службе запрашивать проверку подлинности клиента на основе учетных данных типа "имя пользователя". Обратите внимание, что если для режима безопасности задан TransportWithMessageCredential режим безопасности, WCF не поддерживает отправку дайджеста паролей или производных ключей с помощью пароля и использования таких ключей для безопасности режима сообщения. Таким образом, WCF обеспечивает защиту транспорта при использовании учетных данных имени пользователя. |
Сертификат | Позволяет службе требовать проверки подлинности клиента с помощью сертификата. |
IssuedToken | Позволяет службе использовать службу маркеров безопасности для создания пользовательского маркера. |