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


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

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

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

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

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

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

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

См. также