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