Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Протоколы WS-Security предоставляют механизмы обеспечения безопасности веб-служб, охватывающие все существующие требования к безопасности обмена сообщениями на предприятии. В этом разделе описаны сведения о Windows Communication Foundation (WCF) версии 1.0 (реализованной в ) SecurityBindingElementдля следующих протоколов безопасности веб-служб.
WCF версии 1 предоставляет 17 режимов проверки подлинности, которые можно использовать в качестве основы для конфигурации безопасности веб-служб. Каждый из режимов оптимизирован для того или иного типичного набора требований к развертыванию, например следующих:
- учетные данные, используемые для проверки подлинности клиента и службы;
- механизмы обеспечения безопасности на уровне сообщений или транспорта;
- шаблоны обмена сообщениями.
Режим проверки подлинности | Проверка подлинности клиента | Проверка подлинности сервера | Режим |
---|---|---|---|
ИмяПользователяНадТранспортом | Имя пользователя/пароль | X509 | Транспорт |
CertificateOverTransport | X509 | X509 | Транспорт |
KerberosOverTransport | Виндоус | X509 | Транспорт |
Выпуск токена через транспортный уровень | Федеративные | X509 | Транспорт |
Протокол SSPI через транспорт | Согласование Windows Sspi | Согласование Windows Sspi | Транспорт |
АнонимноДляСертификата | нет | X509 | Сообщение |
ИмяПользователяДляСертификата | Имя пользователя/пароль | X509 | Сообщение |
Сертификат взаимного удостоверения | X509 | X509 | Сообщение |
MutualCertificateDuplex | X509 | X509 | Сообщение |
ВыпущенныйТокенДляСертификата | Федеративные | X509 | Сообщение |
Kerberos | Виндоус | Виндоус | Сообщение |
ВыданныйТокен | Федеративные | Федеративные | Сообщение |
SspiNegotiation | Согласование Windows Sspi | Согласование Windows Sspi | Сообщение |
AnonymousForSslNegotiated | нет | X509, TLS-Nego | Сообщение |
ИмяПользователяДляПереговоровSsl | Имя пользователя/пароль | X509, TLS-Nego | Сообщение |
ВзаимноеSSLсогласование | X509 | X509, TLS-Nego | Сообщение |
Токен, выданный для согласованных сделок SSL | Федеративные | X509, TLS-Nego | Сообщение |
Конечные точки, использующие такие режимы проверки подлинности, могут выражать свои требования безопасности с помощью WS-SecurityPolicy (WS-SP). В этом документе описывается структура заголовка безопасности и инфраструктурные сообщения для каждого режима проверки подлинности, а также приводятся примеры политик и сообщений.
WCF использует WS-SecureConversation, чтобы обеспечить поддержку безопасных сеансов для защиты обмена несколькими сообщениями между приложениями. Сведения о реализации см. ниже в подразделе "Безопасные сеансы".
Помимо режимов проверки подлинности WCF предоставляет параметры для управления общими механизмами защиты, которые применяются к большинству режимов проверки подлинности на основе сообщений, например порядок операций сигнатуры и шифрования, наборов алгоритмов, производных ключей и подтверждения подписи.
В данном документе используются перечисленные ниже префиксы и пространства имен.
Префикс | Пространство имен |
---|---|
s | https://www.w3.org/2003/05/soap-envelope/ |
sp | https://schemas.xmlsoap.org/ws/2005/07/securitypolicy/ |
а | https://www.w3.org/2005/08/addressing |
wsse | Подлежит определению - универсальный код ресурса (URI) OASIS WSS 1,0 |
wsse11 | Подлежит определению - универсальный код ресурса (URI) OASIS WSS 1.1 |
wsu | Подлежит определению - универсальный код ресурса (URI) OASIS WSS 1.0 Utility |
ds | Подлежит определению - универсальный код ресурса (URI) W3C XMLDSig |
wst | Подлежит определению - универсальный код ресурса (URI) WS-Trust 2005/02 |
wssc | Подлежит определению - универсальный код ресурса (URI) WS-SecureConversation 2005/02 |
wsaw | Подлежит определению - пространство имен политики WS-Addressing |
WSP | https://schemas.xmlsoap.org/ws/2004/09/policy |
mssp | https://schemas.xmlsoap.org/ws/2005/07/securitypolicy |
1. Профили маркеров
В спецификациях WS-Security учетные данные представляются в виде токенов безопасности. WCF поддерживает следующие типы токенов:
1.1 Маркер UsernameToken
WCF следует профилям UsernameToken10 и UsernameToken11 со следующими ограничениями:
R1101 Атрибут PasswordType элемента UsernameToken\Password ДОЛЖЕН быть либо опущен, либо иметь значение #PasswordText (по умолчанию).
Можно реализовать #PasswordDigest с помощью расширяемости. Замечено, что #PasswordDigest часто ошибочно считается достаточно безопасным механизмом защиты пароля. Однако #PasswordDigest не может служить заменой шифрованию маркера UsernameToken. Основной целью #PasswordDigest является защита от атак с повторением. В режимах проверки подлинности WCF угрозы атаки воспроизведения устраняются с помощью подписей сообщений.
B1102 WCF никогда не выдает элементы Nonce и Созданные вложенные элементы имени пользователяToken.
Эти подэлементы предназначены для упрощения обнаружения атак с повторением. WCF использует вместо этого подписи сообщений.
В профиле OASIS WSS SOAP Message Security UsernameToken Profile 1.1 (UsernameToken11) введена возможность создания производного ключа из пароля.
B1103 Пароль UsernameToken НЕ ДОЛЖЕН использоваться для создания производного ключа и, следовательно, для операций шифрования.
Обоснование: пароли обычно считаются слишком слабой защитой, для того чтобы использовать их в операциях шифрования.
1.2 Маркер X509
WCF поддерживает сертификаты X509v3 в качестве типа учетных данных и следует X509TokenProfile1.0 и X509TokenProfile1.1 со следующими ограничениями:
R1201 Атрибут ValueType элемента BinarySecurityToken должен иметь значение #X509v3, если он содержит сертификат X509v3.
Профили WSS X509 Token Profile 1.0 и 1.1 также определяют типы значений #X509PKIPathv1 и #PKCS7. WCF не поддерживает эти типы.
R1202 Если в сертификате X509 имеется расширение SubjectKeyIdentifier (SKI), для внешних ссылок на маркер должен использоваться wsse:KeyIdentifier, со значением #X509SubjectKeyIdentifier атрибута ValueType и содержащий значение расширения SKI сертификата в кодировке base64.
Ссылки SKI имеют множество реализаций и зарекомендовали себя как внешний ссылочный тип с широкими возможностями совместимости.
R1203 Внешняя ссылка на маркер безопасности X509 НЕ ДОЛЖНА использовать ds:X509IssuerSerial.
R1204 Если используется профиль X509TokenProfile1.1, внешняя ссылка на маркер безопасности X509 ДОЛЖНА использовать отпечаток, введенный в протоколе WS-Security 1.1.
WCF поддерживает X509IssuerSerial. Однако существуют проблемы с взаимодействием с X509IssuerSerial: WCF использует строку для сравнения двух значений X509IssuerSerial. Таким образом, если один компонент переупорядочения имени субъекта и отправляет ссылку на сертификат в службу WCF, он не найден.
1.3 Маркер Kerberos
WCF поддерживает KerberosTokenProfile1.1 для проверка подлинности Windows со следующими ограничениями:
R1301 Маркер Kerberos должен содержать значение GSS в оболочке Kerberos v4 AP_REQ, как определено в GSS_API и спецификации Kerberos, и должен иметь атрибут ValueType со значением #GSS_Kerberosv5_AP_REQ.
WCF использует оболочку Kerberos AP-REQ, а не интерфейс AP-REQ. Это рекомендуется в целях безопасности.
1.4 Маркер SAML 1.1
WCF поддерживает профили токенов WSS SAML 1.0 и 1.1 для токенов SAML версии 1.1. Возможна реализация других версий форматов маркеров SAML.
1.5 Маркер контекста безопасности
WCF поддерживает маркер контекста безопасности (SCT), представленный в WS-SecureConversation. Маркер контекста безопасности служит для представления контекста безопасности, установленного в спецификации SecureConversation, а также протоколов двоичного согласования TLS и SSPI, описываемых ниже.
2. Общие параметры безопасности сообщений
2.1 TimeStamp
Наличие отметки времени определяется с помощью свойства IncludeTimestamp класса SecurityBindingElement. WCF всегда сериализует wsse:TimeStamp с полями wsse:Created and wsse:Expires. Если используется подписывание, wsse:TimeStamp всегда подписывается.
2.2. Порядок защиты
WCF поддерживает порядок защиты сообщений "Sign Before Encrypt" и Encrypt Before Sign (Security Policy 1.1). По ряду причин рекомендуется использовать порядок «подпись перед шифрованием», в том числе по следующим причинам: если не используется механизм WS-Security 1.1 SignatureConfirmation, сообщения, защищенные в порядке «шифрование перед подписью», подвержены атакам подмены подписи и при подписывании зашифрованного содержимого сложнее производить аудит.
2.3 Защита сигнатуры
Если используется порядок "шифрование перед сигнатурой", рекомендуется защищать сигнатура, чтобы предотвратить атаки методом подбора для угадывания зашифрованного содержимого или ключа сигнатуры (особенно при использовании пользовательского маркера с ненадежным ключевым материалом).
2.4 Набор алгоритмов
WCF поддерживает все наборы алгоритмов, перечисленные в политике безопасности 1.1.
2.5 Формирование ключей
WCF использует "Производный ключ для симметричного ключа", как описано в WS-SecureConversation.
2.6 Подтверждение сигнатуры
Подтверждение сигнатуры может использоваться в качестве защиты от атак типа «злоумышленник в середине», чтобы защитить набор подписей.
2.7 Структура заголовка безопасности
Каждый режим проверки подлинности описывает определенную структуру заголовка безопасности. Элементы в заголовке безопасности полуупорядочены. Чтобы определить порядок дочерних элементов заголовка безопасности, в спецификации WS-Security Policy определены следующие режимы структуры заголовка безопасности:
Режим макета | Порядок элементов |
---|---|
Строгий | Элементы добавляются в заголовок безопасности в соответствии с правилами нумерованной структуры, описанными в разделе 7.7.1 спецификаций Security Policy, на основе общего принципа "объявить перед использованием". |
Слабый | Элементы добавляются в заголовок безопасности в любом порядке, отвечающем требованиям безопасности сообщений WSS: SOAP Message Security. |
LaxTimestFirst | Аналогично Lax, но первым элементом в заголовке безопасности должен быть элемент wsse:Timestamp. |
LaxTimestampLast | Аналогично Lax, но последним элементом в заголовке безопасности должен быть элемент wsse:Timestamp. |
WCF поддерживает все четыре режима для макета заголовка безопасности. В приведенных ниже структурах заголовков безопасности и примерах сообщений для режимов проверки подлинности используется режим "Strict".
6. Политики режима проверки подлинности
В этом подразделе приведены примеры политик для каждого режима проверки подлинности, а также примеры, показывающие структуру заголовка безопасности в сообщениях, которыми обмениваются клиент и служба.
6.1 Защита транспорта
WCF предоставляет пять режимов проверки подлинности, использующих безопасный транспорт для защиты сообщений; UserNameOverTransport, CertificateOverTransport, KerberosOverTransport, IssuedTokenOverTransport и SspiNegotiatedOverTransport.
Эти режимы проверки подлинности построены с использованием привязок транспорта, описанных в спецификации SecurityPolicy. Для режима проверки подлинности UserNameOverTransport маркер UsernameToken является подписанным поддерживающим маркером. Для других режимов проверки подлинности этот маркер является подписанным подтверждающим маркером. В приложениях C.1.2 и C.1.3 спецификации SecurityPolicy подробно описана структура заголовка безопасности. В приведенных ниже примерах заголовки безопасности для определенного режима проверки подлинности показаны со структурой Strict.
Свойство Derived Keys для маркеров во всех случаях имеет значение "false".
Различные свойства привязок транспорта имеют следующие значения:
Отметка времени: true
Структура заголовка безопасности: Strict
Набор алгоритмов: Basic256
6.1.1 ИмяПользователяПоТранспорту
В этом режиме проверка подлинности клиента осуществляется с использованием маркера Username, который доступен на уровне SOAP в качестве подписанного поддерживающего маркера, всегда отправляемого от инициатора получателю. Служба проходит проверку подлинности с использованием сертификата X.509 на транспортном уровне. Используется привязка транспорта.
Политика
<wsp:Policy wsu:Id='UsernameOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens >
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11 >
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10 >
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Структура заголовка безопасности
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:UsernameToken>
...
</wsse:UsernameToken>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
</wsse:Security>
6.1.2 CertificateOverTransport
В этом режиме проверка подлинности клиента осуществляется с использованием сертификата X.509, который доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера, всегда отправляемого от инициатора получателю. Служба проходит проверку подлинности с использованием сертификата X.509 на транспортном уровне. Используется привязка транспорта.
Политика
<wsp:Policy wsu:Id='CertificateOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy' >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Структура заголовка безопасности
Запросить
<wsse:Security s:mustUnderstand="1">
<wse:Timestamp u:Id="_0">
...
</wse:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Ответ
<o:Security>
<u:Timestamp u:Id="_0">
...
</u:Timestamp>
</o:Security>
6.1.3 IssuedTokenOverTransport
В этом режиме проверки подлинности клиент не проходит как таковую проверку подлинности на стороне службы; вместо этого он предоставляет маркер, выданный службой маркеров безопасности (STS) и подтверждает знание общего ключа. Выданный маркер доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера, всегда отправляемого от инициатора получателю. Служба проходит проверку подлинности с использованием сертификата X.509 на транспортном уровне. Используется привязка транспорта.
Политика
<wsp:Policy wsu:Id='IssuedTokenOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Структура заголовка безопасности
Запросить
<wsse:Security s:mustUnderstand="1" >
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
</wsse:Security>
6.1.4 KerberosOverTransport
В этом режиме проверка подлинности клиента на стороне службы осуществляется с использованием билета Kerberos. Маркер Kerberos доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера. Служба проходит проверку подлинности с использованием сертификата X.509 на транспортном уровне. Используется привязка транспорта.
Политика
<wsp:Policy wsu:Id='KerberosOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding>
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:KerberosToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once' >
<wsp:Policy>
<sp:WssGssKerberosV5ApReqToken11 />
</wsp:Policy>
</sp:KerberosToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Структура заголовка безопасности
Запросить
<wsse:Security s:mustUnderstand="1" >
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken ValueType="...#GSS_Kerberosv5_AP_REQ">
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
</wsse:Security>
6.1.5 SspiNegotiatedOverTransport
В этом режиме для проверки подлинности клиента и сервера используется протокол согласования. Если это возможно, используется протокол Kerberos, в противном случае - протокол NTLM. Итоговый маркер контекста безопасности доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера, всегда отправляемого от инициатора получателю. Служба проходит дополнительную проверку подлинности на транспортном уровне с использованием сертификата X.509. Используется привязка транспорта. "SPNEGO" (согласование) описывает, как WCF использует протокол двоичного согласования SSPI с WS-Trust. В этом разделе приведены примеры заголовков безопасности после установления маркера контекста безопасности с помощью подтверждения SPNEGO.
Политика
<wsp:Policy wsu:Id='SspiNegotiatedOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding>
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:SpnegoContextToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy />
</sp:SpnegoContextToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности
После установления маркера контекста безопасности с помощью подтверждения SPNEGO при использовании двоичного согласования WS-Trust заголовки безопасности в сообщениях приложения имеют следующую структуру.
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:SecurityContextToken u:Id="uuid-2202746a-7725-453d-8747-809cb718dab0-29" >
...
</wssc:SecurityContextToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
</wsse:Security>
6.2 Использование сертификатов X.509 для проверки подлинности службы
В этом разделе рассматриваются следующие режимы проверки подлинности: MutualCertificate WSS1.0, Mutual CertificateDuplex, MutualCertificate WSS1.1, AnonymousForCertificate, UserNameForCertificate и IssuedTokenForCertificate.
6.2.1 MutualCertificate WSS1.0
В этом режиме проверка подлинности клиента осуществляется с использованием сертификата X.509, который доступен на уровне SOAP в качестве маркера инициатора. Служба также проходит проверку подлинности с использованием сертификата X.509.
Используется асимметричная привязка со следующими значениями свойств.
Маркер инициатора: сертификат X.509 клиента, задан режим включения …/IncludeToken/AlwaysToRecipient
Маркер получателя: сертификат X.509 сервера, задан режим включения …/IncludeToken/Never
Защита маркера: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Политика
<wsp:Policy wsu:Id='MutualCertificate_WSS10_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.2 MutualCertificateDuplex
В этом режиме проверка подлинности клиента осуществляется с использованием сертификата X.509, который доступен на уровне SOAP в качестве маркера инициатора. Служба также проходит проверку подлинности с использованием сертификата X.509.
Используется асимметричная привязка со следующими значениями свойств.
Маркер инициатора: сертификат X.509 клиента, задан режим включения …/IncludeToken/AlwaysToRecipient
Маркер получателя: сертификат X.509 сервера, задан режим включения …/IncludeToken/AlwaysToInitiator
Защита маркера: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Политика
<wsp:Policy wsu:Id='MutualCertificateDuplex_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToInitiator' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запрос и ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запрос и ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.3 Использование SymmetricBinding с проверкой подлинности службы X.509
Спецификация "WSS10" обеспечивает ограниченную поддержку сценариев с маркерами X509. Например, в этой версии не было способа обеспечить защиту сообщений сигнатурой и шифрованием, используя только маркер X509 службы. В спецификации "WSS11" вводится использование EncryptedKey в качестве симметричного маркера. Теперь временный ключ, зашифрованный для сертификата X.509 службы, может использоваться для защиты как сообщений запроса, так и сообщений ответа. Эта схема используется в режимах проверки подлинности, описанных ниже в разделе 6.4.
В спецификации WS-SecurityPolicy эта схема описывается с помощью привязки SymmetricBinding с маркером X509 службы в качестве маркера защиты.
В режимах проверки подлинности AnonymousForCertificate, UsernameForCertificate, MutualCertificate WSS11 и IssuedTokenForCertificate используется аналогичный экземпляр sp:SymmetricBinding со следующими значениями свойств.
Маркер защиты: сертификат X509 сервера режим включения имеет значение .../IncludeToken/Never Token Protection: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Перечисленные выше режимы проверки подлинности различаются только используемыми поддерживающими маркерами. В режиме AnonymousForCertificate поддерживающие маркеры отсутствуют, в режиме MutualCertificate (WSS 1.1) сертификат X509 клиента используется как подтверждающие поддерживающие маркеры, в режиме UserNameForCertificate маркер UserName используется как подписанный поддерживающий маркер, а в режиме IssuedTokenForCertificate выданный маркер используется как подтверждающий поддерживающий маркер.
Политика
Симметричная привязка
<wsp:Policy wsu:Id='SymmetricCert_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<!-- Supporting Token Assertions appear here -->
...
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
<sp:RequireSignatureConfirmation />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
6.2.4 АнонимныйДляСертификата
В этом режиме проверки подлинности клиент является анонимным, а проверка подлинности службы осуществляется с использованием сертификата X.509. Используется экземпляр симметричной привязки, как описано в разделе 6.4.2.
Политика
Сведения о привязке см. в пункте «Политика» раздела 6.2.3
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.5 UserNameForCertificate
В этом режиме проверка подлинности клиента в службе осуществляется с использованием маркера Username, который доступен на уровне SOAP в качестве подписанного поддерживающего маркера. Проверка подлинности службы на стороне клиента осуществляется с помощью сертификата X.509. Используется симметричная привязка, в которой маркер защиты создан с помощью ключа клиента и зашифрован с помощью открытого ключа службы.
Политика
Сведения о привязке см. в пункте «Политика» раздела 6.2.3
Подписанный поддерживающий маркер
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.6 MutualCertificate (WSS 1.1)
В этом режиме проверка подлинности клиента осуществляется с использованием сертификата X.509, который доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера. Служба также проходит проверку подлинности с использованием сертификата X.509. Используется симметричная привязка, в которой маркер защиты создан с помощью ключа клиента и зашифрован с помощью открытого ключа службы.
Политика
Сведения о привязке см. в пункте «Политика» раздела 6.2.3
Подтверждающий поддерживающий маркер
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.7 ВыпущенныйТокенДляСертификата
В этом режиме проверки подлинности клиент не проходит как таковую проверку подлинности на стороне службы; вместо этого он предоставляет маркер, выданный службой маркеров безопасности и подтверждает знание общего ключа. Выданный маркер доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера. Проверка подлинности службы на стороне клиента осуществляется с помощью сертификата X.509. Используется симметричная привязка, в которой маркер защиты создан с помощью ключа клиента и зашифрован с помощью открытого ключа службы.
Политика
Сведения о привязке см. в пункте «Политика» раздела 6.2.3
Подтверждающий поддерживающий маркер
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<saml:Assertion>
...
</saml:Assertion>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<saml:Assertion>
...
</saml:Assertion>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.3 Kerberos
В этом режиме проверка подлинности клиента на стороне службы осуществляется с использованием билета Kerberos. Этот же билет обеспечивает проверку подлинности сервера. Используется симметричная привязка со следующими свойствами.
Маркер защиты: билет Kerberos, режим включения имеет значение .../IncludeToken/Once Token Protection: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Политика
<wsp:Policy wsu:Id='Kerberos_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:KerberosToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:WssGssKerberosV5ApReqToken11 />
</wsp:Policy>
</sp:KerberosToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
TBD
</wsse:Security>
Ответ
<wsse:Security>
TBD
</wsse:Security>
6.4 ВыпущенныйТокен
В этом режиме проверки подлинности клиент не проходит как таковую проверку подлинности на стороне службы; вместо этого клиент предоставляет маркер, выданный службой маркеров безопасности и подтверждает знание общего ключа. Служба не проходит как таковую проверку подлинности на стороне клиента, но служба маркеров безопасности шифрует общий ключ как часть выдаваемого маркера, чтобы только служба могла расшифровать этот ключ. Используется симметричная привязка со следующими свойствами.
Маркер защиты: выданный маркер, режим включения имеет значение .../IncludeToken/AlwaysToRecipient Token Protection: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Политика
<wsp:Policy wsu:Id='CustomBinding_ISimple3_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5 Использование SslNegotiated для проверки подлинности службы
В этом разделе рассматривается группа режимов проверки подлинности, в которых используется симметричная привязка с маркером защиты, являющимся маркером контекста безопасности в соответствии со спецификацией WS-SecureConversation (WS-SC), значение ключа которого согласовывается путем выполнения протокола TLS с помощью сообщений RST/RSTR спецификации WS-Trust (WS-T). Сведения о реализации подтверждения TLS с помощью спецификации WS-Trust приведены в спецификации TLSNEGO. В приведенных ниже примерах сообщений предполагается, что маркер контекста безопасности со связанным контекстом безопасности уже установлен путем подтверждения.
Используется симметричная привязка со следующими свойствами.
Маркер защиты: SslContextToken, режим включения имеет значение .../IncludeToken/Never Token Protection: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
6.5.1 Политика для проверки подлинности службы SslNegotiated
Политики для всех режимов проверки подлинности в этом разделе аналогичны и различаются только определенными используемыми подписанными поддерживающими или подтверждающими маркерами.
<wsp:Policy wsu:Id='SslNegotiated_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<mssp:SslContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient'>
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</mssp:SslContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<!-- Supporting token assertions go here -->
..
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
6.5.2 AnonymousForSslNegotiated
В этом режиме проверки подлинности клиент является анонимным, а проверка подлинности службы осуществляется с использованием сертификата X.509. Используется экземпляр симметричной привязки, как описано выше в разделе 6.5.1.
Политика
Сведения о привязке см. в пункте «Политика» раздела 6.5.1.
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.3 Имя пользователя для SSL negotiation
В этом режиме проверка подлинности клиента осуществляется с использованием маркера Username, который доступен на уровне SOAP в качестве подписанного поддерживающего маркера. Служба проходит проверку подлинности с использованием сертификата X.509. Используется экземпляр симметричной привязки, как описано в разделе 6.5.1.
Политика
Сведения о привязке см. в разделе 6.5.1
Подписанный поддерживающий маркер
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.4 IssuedTokenForSslNegotiated
В этом режиме проверки подлинности клиент не проходит как таковую проверку подлинности на стороне службы; вместо этого он предоставляет маркер, выданный службой маркеров безопасности и подтверждает знание общего ключа. Выданный маркер доступен на уровне SOAP в качестве подтверждающего поддерживающего маркера. Служба проходит проверку подлинности с использованием сертификата X.509. Используется экземпляр симметричной привязки, как описано выше в разделе 6.5.1.
Политика
Сведения о привязке см. в разделе 6.5.1
Подтверждающий поддерживающий маркер
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.5 Взаимосогласованный SSL
В этом режиме проверка подлинности клиента и службы осуществляется с использованием сертификатов X.509. Используется экземпляр симметричной привязки, как описано выше в разделе 6.5.1.
Политика
Сведения о привязке см. в разделе 6.5.1
Подтверждающий поддерживающий маркер
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.6 SspiNegotiated
В этом режиме для проверки подлинности клиента и сервера используется протокол согласования. Если это возможно, используется протокол Kerberos, в противном случае - протокол NTLM. Используется симметричная привязка со следующими свойствами.
Маркер защиты: SpnegoContextToken, режим включения имеет значение .../IncludeToken/AlwaysToRecipient Token Protection: False
Сигнатуры всего заголовка и тела: True
Порядок защиты: SignBeforeEncrypt
Шифрование подписи: True
Политика
<wsp:Policy wsu:Id='CustomBinding_ISimple13_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SpnegoContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</sp:SpnegoContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.7 SecureConversation
Используется симметричная привязка, в которой маркером защиты является маркер контекста безопасности в соответствии со спецификацией WS-SecureConversation (WS-SC). Согласование маркера контекста безопасности производится с использованием спецификации WS-Trust (WS-Trust) или WS-SecureConversation (WS-SC) в соответствии с вложенной привязкой, которая сама является симметричной привязкой, использующей протокол согласования. При возможности в протоколе согласования для проверки подлинности клиента и сервера используется протокол Kerberos. Если использование протокола Kerberos невозможно, используется резервный протокол NTLM.
Политика
<wsp:Policy wsu:Id='SecureConversation_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SignedParts>
<sp:Body />
<sp:Header Name='To' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='From' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='FaultTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='ReplyTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='MessageID' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='RelatesTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='Action' Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body />
</sp:EncryptedParts>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SpnegoContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</sp:SpnegoContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Примеры заголовков безопасности: SignBeforeEncrypt, EncryptSignature
Запросить
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Ответ
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Примеры заголовков безопасности: EncryptBeforeSign
Запросить
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Ответ
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>