Практическое руководство. Задание режима безопасности
Безопасность Windows Communication Foundation (WCF) имеет три распространенных режима безопасности, которые находятся в большинстве предопределенных привязок: транспорт, сообщение и транспорт с учетными данными сообщения. Два дополнительных режима относятся к двум привязкам: режим "только для учетных данных транспорта", найденный в режиме BasicHttpBinding"Оба", найденном в элементе NetMsmqBinding. Однако в этом разделе основное внимание уделяется трем наиболее распространенным режимам безопасности: Transport, Message и TransportWithMessageCredential.
Обратите внимание, что не все предварительно определенные привязки поддерживают все указанные режимы. В этом разделе режим задается с помощью классов WSHttpBinding и NetTcpBinding; также в этом разделе показан порядок задания режима как программно, так и с помощью конфигурации.
Дополнительные сведения см. в разделе "Безопасность WCF", " Обзор безопасности", "Защита служб" и "Защита служб и клиентов". Дополнительные сведения о режиме транспорта и сообщении см. в разделе "Безопасность транспорта" и "Безопасность сообщений".
Задание режима безопасности в коде
Создайте экземпляр используемого класса привязки. Список предопределенных привязок см. в разделе "Предоставленные системой привязки". В данном примере создается экземпляр класса WSHttpBinding.
Задайте свойство
Mode
объекта, возвращаемого свойствомSecurity
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
Или задайте режим "сообщение", как показано в следующем примере кода.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
Или задайте режим "транспорт с учетными данными сообщения", как показано в следующем примере кода.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
Также можно задать режим в конструкторе привязки, как показано в следующем примере кода.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
Задание свойства ClientCredentialType
Задание одного из трех значений режима определяет способ задания свойства ClientCredentialType
. Например, при использовании класса WSHttpBinding задание режима Transport
означает, что необходимо присвоить свойству ClientCredentialType класса HttpTransportSecurity соответствующее значение.
Задание свойства ClientCredentialType для режима Transport
Создайте экземпляр привязки.
Установите свойство
Mode
в значениеTransport
.Присвойте свойству
ClientCredential
соответствующее значение. В следующем примере кода показано, как присвоить свойству значениеWindows
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
Задание свойства ClientCredentialType для режима Message
Создайте экземпляр привязки.
Установите свойство
Mode
в значениеMessage
.Присвойте свойству
ClientCredential
соответствующее значение. В следующем примере кода показано, как присвоить свойству значениеCertificate
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
Задание режима и свойства ClientCredentialType в конфигурации
Добавьте соответствующий элемент привязки в <элемент bindings> файла конфигурации. В следующем примере добавляется <элемент wsHttpBinding> .
<binding>
Добавьте элемент и задайте егоname
атрибут соответствующим значением.Добавьте элемент
<security>
и присвойте атрибутуmode
значениеMessage
,Transport
илиTransportWithMessageCredential
.Если задан режим
Transport
, добавьте элемент<transport>
и присвойте атрибутуclientCredential
соответствующее значение.В следующем примере задается режим "
Transport"
, а затем атрибутуclientCredentialType
элемента<transport>
присваивается значение "Windows"
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
Можно также задать для атрибута
security mode
значение "Message"
, а затем указать элемент<"message">
. В этом примере атрибутуclientCredentialType
присваивается значение "Certificate"
.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
Значение TransportWithMessageCredential используется в особых случаях; подробнее см. ниже.
Использование режима TransportWithMessageCredential
При задании режима безопасностиTransportWithMessageCredential
транспорт определяет фактический механизм, обеспечивающий безопасность на транспортном уровне. Например, протокол HTTP использует SSL по HTTP (HTTPS). Поэтому задание свойства ClientCredentialType
любого объекта безопасности транспорта (такого как HttpTransportSecurity) игнорируется. Другими словами, можно задать только свойство ClientCredentialType
объекта безопасности сообщения (для привязки WSHttpBinding
это объект NonDualMessageSecurityOverHttp).
Дополнительные сведения см. в разделе "Практическое руководство. Использование учетных данных безопасности транспорта и сообщений".
См. также
- Практическое руководство. Настройка порта с использованием SSL-сертификата
- Практическое руководство. Использование средств обеспечения безопасности транспорта и учетных данных сообщения
- Безопасность транспорта
- Безопасность сообщений
- Общие сведения о безопасности для служб R SQL Server
- Привязки, предоставляемые системой
- <Безопасность >
- <Безопасность >
- <Безопасность >