Поделиться через


Защита сообщений с использованием средств обеспечения безопасности сообщений

В этом разделе рассматривается безопасность сообщений WCF при использовании NetMsmqBinding.

Примечание.

Перед чтением этой статьи рекомендуется прочитать основные понятия безопасности.

На следующем рисунке представлена концептуальная модель обмена данными в очереди с помощью WCF. Для объяснения принципов безопасности транспорта

используются следующие терминология и рисунки.

Queued Application Diagram

При отправке сообщений в очереди с помощью WCF сообщение WCF присоединяется в виде текста сообщения очереди сообщений (MSMQ). В то время как безопасность транспорта обеспечивает безопасность всего сообщения MSMQ, безопасность сообщений (или протокол SOAP) обеспечивает безопасность только тела сообщения MSMQ.

Ключевым принципом безопасности сообщений является обеспечение безопасности сообщения клиентом для принимающего приложения (службы), в отличие от безопасности транспорта, когда клиент обеспечивает безопасность сообщения для целевой очереди. Таким образом, MSMQ не играет никакой участия при защите сообщения WCF с помощью безопасности сообщений.

Безопасность сообщений WCF добавляет заголовки безопасности в сообщение WCF, которое интегрируется с существующими инфраструктурами безопасности, например сертификатом или протоколом Kerberos.

Типы учетных данных сообщений

С помощью безопасности сообщений служба и клиент могут предоставить учетные данные для двусторонней проверки подлинности. Включить безопасность сообщений можно, установив для режима Security значение Message или Both (то есть использование и безопасности транспорта, и безопасности сообщений).

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

В этом разделе описываются различные типы учетных данных и их использование с очередями.

Сертификат

Этот тип учетных данных сертификата использует сертификат X.509 для идентификации службы и клиента.

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

Так как очереди отключены от сети, клиент и служба могут быть не подключены к сети одновременно. В таком случае клиент и служба должны обмениваться сертификатами по внештатному каналу. В частности, на основании наличия сертификата службы (который может быть привязан к центру сертификации) в доверенном хранилище клиент должен заключить, что взаимодействие осуществляется с нужной службой. Для проверки подлинности клиента служба использует сертификат X.509, прикрепленный к сообщению, для сопоставления его сертификату проверки подлинности клиента в хранилище. Аналогичным образом сертификат должен быть привязан к центру сертификации.

На компьютере под управлением Windows имеется несколько типов хранилищ сертификатов. Дополнительные сведения о разных хранилищах см. в разделе "Хранилища сертификатов".

Windows

Тип учетных данных сообщений Windows использует протокол Kerberos.

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

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

Обратите внимание, что при использовании этого типа учетных данных служба должна запускаться из учетной записи службы (SERVICE).

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

Имя пользователя и пароль

С помощью этого свойства клиент может проверить подлинность сервера, используя имя пользователя и пароль в заголовке безопасности сообщения.

IssuedToken

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

Использование безопасности транспорта и сообщений

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

См. также