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


Соображения о защите безопасных сеансов

При реализации безопасных сеансов необходимо принять во внимание указанные ниже элементы, влияющие на безопасность. Дополнительные сведения вопросах безопасности см. в разделах Вопросы безопасности и Рекомендации по безопасности при использовании WCF.

Безопасные сеансы и метаданные

Когда безопасный сеанс установлен и для свойства RequireCancellation задано значение false, Windows Communication Foundation (WCF) передает проверочное утверждение mssp:MustNotSendCancel в качестве компонента метаданных в документе WSDL для конечной точки службы. Проверочное утверждение mssp:MustNotSendCancel информирует клиентов о том, что служба не отвечает на запросы, чтобы отменить безопасный сеанс. Если для свойства RequireCancellation задано значение true, WCF не выдает проверочное утверждение mssp:MustNotSendCancel в документе WSDL. Предполагается, что если безопасный сеанс клиентам больше не требуется, они передают службе запрос отмены. Когда клиент создается с помощью программы Служебное средство ServiceModel Metadata Utility Tool (Svcutil.exe), код клиента реагирует соответствующим образом на наличие или отсутствие проверочного утверждения mssp:MustNotSendCancel.

Безопасные диалоги и пользовательские маркеры

Из-за определения, сделанного в спецификации WS-SecureConversation, существует несколько проблем, связанных со смешиванием пользовательских маркеров и производных ключей. В этой спецификации говорится, что wsse:SecurityTokenReference — необязательный элемент, который ссылается на производный маркер «**/wsc:DerivedKeyToken/wsse:SecurityTokenReference** Этот необязательный элемент используется для указания маркера контекста безопасности или общего ключа/секрета, используемого для формирования ключа. Если указанные компоненты не заданы, предполагается, что получатель может определить общий ключ из контекста сообщения. Если контекст определить невозможно, должен произойти сбой wsc:UnknownDerivationSource”.

Это означает, что, если требуется получить пользовательский маркер, необходимо зашифровать его тип предложения в элементе SecurityTokenReference. Формирование ключей можно отключить, но по умолчанию ключи формируются. Если ключ не шифруется, сериализация маркера производного ключа происходит успешно, но при попытке десериализовать его вызывается исключение.

См. также

Задачи

Как упорядочить отключения безопасных сеансов в WSFederationHttpBinding

Основные понятия

Рекомендации по безопасности при использовании WCF

Другие ресурсы

Вопросы безопасности