Защита распределенных приложений
Безопасность Windows Communication Foundation (WCF) подразделяется на три основные функциональные области: безопасность передачи, управление доступом и аудит. Безопасность передачи обеспечивает целостность, конфиденциальность и проверку подлинности. Безопасность передачи обеспечивается одним из следующих способов: безопасность транспорта, безопасность сообщений или TransportWithMessageCredential.
Общие сведения по безопасности сообщений WCF см. в разделе Общие сведения о безопасности. Дополнительные сведения двух других способах обеспечения безопасности WCF см. в разделах Авторизация и Аудит событий безопасности.
Сценарии безопасности передачи
Обычными сценариями, в которых используется безопасность передачи WCF, являются следующие сценарии:
Безопасная передача с помощью Windows. Клиент и служба WCF развертываются в домене Windows (или в лесу Windows). Сообщения содержат личные данные, поэтому требуется взаимная проверка подлинности клиента и службы, целостность сообщений и конфиденциальность сообщений. Кроме того, требуется подтверждение проведения конкретной транзакции, например, получатель сообщения должен записать информацию о сигнатуры.
Безопасная передача с использованием UserName и HTTPS. Клиент и служба WCF должны быть разработаны для работы по Интернету. Подлинность учетных данных клиента проверяется по базе данных, содержащих пары "имя пользователя-пароль". Служба разворачивается по адресу HTTPS с использованием доверенного SSL-сертификата. Так как сообщения передаются по Интернету, необходима взаимная проверка подлинности клиента и службы, и во время передачи необходимо сохранение конфиденциальности и целостности сообщений.
Безопасная передача с помощью сертификатов. Клиент и служба WCF должны быть разработаны для работы по открытому Интернету. Как клиент, так и служба имеют сертификаты, которые можно использовать для обеспечения безопасности сообщений. Клиент и служба используют Интернет для взаимодействия друг с другом и для выполнения ценных транзакций, требующих целостности и конфиденциальности сообщений, а также взаимной проверки подлинности.
Целостность, конфиденциальность и проверка подлинности
Эти функции (целостность, конфиденциальность и проверка подлинности) совместно называются безопасностью передачи. Безопасность передачи обеспечивает функции, позволяющие устранить угрозы для распределенных приложений. В приведенной ниже таблице кратко описаны три функции, составляющие безопасность передачи.
Функция | Описание |
---|---|
Целостность |
Целостность — это гарантия полноты и точности данных, особенно после передачи из одной точки в другую и, возможно, считывания несколькими агентами. Целостность, необходимая для предотвращения подделки данных, обычно обеспечивается цифровой подписью сообщения. |
Конфиденциальность |
Конфиденциальность — это гарантия того, что сообщение не было прочитано никем другим, кроме предполагаемого читателя. Например, при передаче по Интернету необходимо сохранить в секрете номер кредитной карты. Конфиденциальность часто обеспечивается путем шифрования данных с использованием схемы "открытый ключ/закрытый ключ". |
Проверка подлинности |
Проверка подлинности — это проверка заявленной идентификации. Например, при использовании банковского счета абсолютно необходимо, чтобы снятие средств могло быть выполнено только действительным владельцем счета. Проверка подлинности может обеспечиваться различными средствами. Одним из обычных способов является система пользователь/пароль. Вторым способом является использование сертификата X.509, предоставляемого третьей стороной. |
Режимы безопасности
В WCF предусмотрены несколько режимов безопасности передачи, рассматриваемые в приведенной ниже таблице.
Режим | Описание |
---|---|
None |
Безопасность на уровне транспорта или на уровне сообщений не обеспечивается. Ни в одной из заранее определенных привязок этот режим не используется по умолчанию, за исключением элемента <basicHttpBinding> или, при использовании кода, класса BasicHttpBinding. |
Транспорт |
Для обеспечения целостности, конфиденциальности и взаимной проверки подлинности используется безопасный транспорт, такой как HTTPS. |
Сообщение |
Для обеспечения целостности, конфиденциальности и для взаимной проверки подлинности используется безопасность SOAP-сообщений. Защита SOAP-сообщений обеспечивается в соответствии со стандартами WS-Security. |
Смешанный режим |
Целостность, конфиденциальность и проверка подлинности сервера обеспечиваются с помощью средств безопасности транспорта. Для проверки подлинности клиента используются средства безопасности сообщений (WS-Security и другие стандарты). (В перечислении этому режиму соответствует значение TransportWithMessageCredential.) |
Оба значения |
Защита и проверка подлинности выполняется на обоих уровнях. Этот режим доступен только в элементе <netMsmqBinding>. |
Учетные данные и безопасность передачи
Учетные данные — это данные, предоставляемые для подтверждения заявленной идентификации или возможностей. При предоставлении учетных данных требуется предоставить как сами данные, так и доказательство обладания этими данными. WCF поддерживает учетные данные различных типов как на уровне безопасности транспорта, так и на безопасности уровне сообщений. Можно указать тип учетных данных для привязки WCF.
Во многих странах или регионах примером учетных данных могут служить водительские права. Водительские права содержат данные о личности и возможностях их обладателя. Они содержат доказательство владения в виде фотографии владельца. Водительские права выданы доверенной организацией, обычно государственным органом. Водительские права ламинированы и могут содержать голограмму, подтверждающую, что права не изменены или подделаны.
Для примера рассмотрим два типа учетных данных в WCF: имя пользователя и сертификат (X.509).
В учетных данных с именем пользователя имя пользователя представляет заявленную идентификацию, а пароль является доказательством прав обладания. Центром авторизации в данном случае является система, проверяющая имя пользователя и пароль.
В учетных данных с сертификатом имя субъекта, альтернативное имя субъекта или определенные поля сертификата могут использоваться для представления заявленной идентификации и/или возможностей. Обладание данными, приведенными в учетных данных, доказывается с помощью соответствующего закрытого ключа, использованного для создания сигнатуры.
Дополнительные сведения программировании безопасности при передаче и задании учетных данных см. в разделах Привязки и безопасность и Поведения безопасности в WCF.
Типы учетных данных клиента с безопасностью транспорта
В следующей таблице приведены возможные значения, применимые при создании приложения, использующего безопасность транспорта. Эти значения можно использовать либо в коде, либо в параметрах привязки.
Параметр | Описание |
---|---|
None |
Указывает, что клиенту не требуется предоставлять учетные данные. Это означает, что клиент является анонимным. |
Basic |
Задает обычную проверку подлинности. Дополнительные сведения см. в документе RFC2617, "HTTP Authentication: Basic and Digest Authentication". |
Digest |
Задает дайджест-проверку подлинности. Дополнительные сведения см. в документе RFC2617, "HTTP Authentication: Basic and Digest Authentication". |
Ntlm |
Задает проверку подлинности Windows с использованием согласования SSPI с домене Windows. При согласовании SSPI выбирается либо протокол Kerberos, либо протокол NT LanMan (NTLM). |
Windows |
Задает проверку подлинности Windows с использованием согласования SSPI с домене Windows. В качестве службы проверки подлинности SSPI выбирает либо протокол Kerberos, либо протокол NT LanMan (NTLM). Сначала SSPI пытается использовать протокол Kerberos; если это не удается, используется NTLM. |
Certificate |
Выполняет проверку подлинности клиента с использованием сертификата, обычно X.509. |
Типы учетных данных клиента при использовании безопасности сообщений
В следующей таблице приведены возможные значения, применимые при создании приложения, использующего безопасность сообщений. Эти значения можно использовать либо в коде, либо в параметрах привязки.
Параметр | Описание |
---|---|
None |
Позволяет службе взаимодействовать с анонимными клиентами. |
Windows |
Позволяет проводить обмен сообщениями SOAP, если выполнена проверка подлинности с помощью учетных данных Windows. Для выбора службы проверки подлинности (протокол Kerberos или протокол NTLM) используется механизм согласования SSPI. |
Username |
Позволяет службе запрашивать проверку подлинности клиента на основе учетных данных типа "имя пользователя". Обратите внимание, что WCF не допускает каких-либо криптографических операций для имени пользователя, таких как создание сигнатуры или шифрование данных. Таким образом, WCF принудительно задает безопасность транспорта при использовании учетных данных типа "имя пользователя". |
Certificate |
Позволяет службе требовать проверку подлинности клиента с помощью сертификата. |
CardSpace |
Позволяет службе требовать проверку подлинности клиента с помощью CardSpace. |
Программирование учетных данных
Для каждого типа учетных данных клиента модель программирования WCF позволяет задать значения учетных данных и проверяющие элементы управления с помощью поведений службы и канала.
Безопасность WCF предусматривает учетные данные двух типов: поведения службы и поведения канала. Поведения учетных данных в WCF задают фактические данные, т. е. учетные данные, используемые для удовлетворения требований к безопасности, выраженных через привязки. В WCF класс клиента является компонентом времени выполнения, который выполняет преобразование между вызовом операции и сообщениями. Все клиенты наследуют от класса ClientBase. Свойство ClientCredentials базового класса позволяет задавать различные значения учетных данных клиента.
В WCF поведения службы являются атрибутом, примененным к классу, реализующему контракт службы (интерфейс) для программного управления службой. Класс ServiceCredentials позволяет указать сертификаты для учетных данных службы и параметры проверки клиента для различных типов учетных данных клиента.
Модель согласования для безопасности сообщений
Режим безопасности сообщений позволяет реализовать безопасность передачи таким образом, чтобы учетные данные службы задавались в клиенте по внештатному каналу. Например, если используется сертификат, хранящийся в хранилище сертификатов Windows, необходимо использовать такое средство, как оснастка консоли управления (MMC).
Режим безопасности сообщений также позволяет обеспечивать безопасность передачи таким образом, чтобы учетные данные службы передавались клиенту в процессе начального согласования. Для разрешения согласования задайте для свойства NegotiateServiceCredential значение true.
См. также
Основные понятия
Общие сведения о создании конечных точек
Привязки, предоставляемые системой
Общие сведения о безопасности