Защита сообщений с помощью безопасности сообщений

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

Замечание

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

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

Концепции безопасности транспорта.

Схема распределенных очередей приложений

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

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

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

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

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

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

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

Сертификат

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

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

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

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

Виндоус

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

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

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

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

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

Пароль пользователя

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

ВыданныйТокен

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

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

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

См. также