<<безопасность> customBinding>

Задает параметры безопасности для пользовательской привязки.

<configuration>
  <system.serviceModel>
    <bindings>
      <Custombinding>
        <Привязки>
          <Безопасность >

Синтаксис

<security allowSerializedSigningTokenOnReply="Boolean"
          authenticationMode="AuthenticationMode"
          defaultAlgorithmSuite="SecurityAlgorithmSuite"
          includeTimestamp="Boolean"
          requireDerivedKeys="Boolean"
          keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
          messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
          messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
          requireSecurityContextCancellation="Boolean"
          requireSignatureConfirmation="Boolean"
          securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast">
   <issuedTokenParameters />
   <localClientSettings />
   <localServiceSettings />
   <secureConversationBootstrap />
</security>

Атрибуты и элементы

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

Атрибуты

Атрибут Description
allowSerializedSigningTokenOnReply Необязательно. Логическое значение, определяющее, может ли в ответе использоваться сериализованный маркер. Значение по умолчанию — false. При использовании двойной привязки для всех параметров, имеющих значение по умолчанию true, пропускаются любые заданные параметры.
authenticationMode Необязательно. Указывает режим проверки подлинности, используемый между инициатором и отвечающим устройством. Список значений приведен ниже.

Значение по умолчанию — sspiNegotiated.
defaultAlgorithmSuite Необязательно. Задает алгоритмы шифрования сообщений и ключей. Алгоритмы и размеры ключей определяются классом SecurityAlgorithmSuite. Эти алгоритмы соответствуют алгоритмам, заданным в спецификации языка политики безопасности (WS-SecurityPolicy).

Допустимые значения приведены ниже. Значение по умолчанию — Basic256.

Этот атрибут используется при работе с другой платформой, которая использует набор алгоритмов, отличный от набора по умолчанию. При внесении изменений в параметры настройки необходимо знать о сильных и слабых сторонах соответствующих алгоритмов. Это атрибут типа SecurityAlgorithmSuite.
includeTimestamp Логическое значение, определяющее, включается ли в каждое сообщение отметка времени. Значение по умолчанию — true.
keyEntropyMode Указывает способ вычисления ключей для защиты сообщений. Ключи могут быть основаны только на данных ключа клиента, только на данных ключа службы или на сочетании обоих типов данных. Допустимы следующие значения:

- ClientEntropy: ключ сеанса основан на ключевых данных, предоставляемых клиентом.
- ServerEntropy: ключ сеанса основан на ключевых данных, предоставляемых сервером.
- CombinedEntropy: ключ сеанса основан на ключевых данных, предоставляемых клиентом и службой.

Значение по умолчанию — CombinedEntropy.

Это атрибут типа SecurityKeyEntropyMode.
messageProtectionOrder Определяет порядок, в котором к сообщению применяются алгоритмы безопасности уровня сообщения. Допустимые значения.

- SignBeforeEncrypt: сначала подписать, а затем зашифровать.
- SignBeforeEncryptAndEncryptSignature: сначала запишите, зашифруйте, а затем зашифруйте подпись.
- EncryptBeforeSign: сначала зашифруйте, а затем подписываете.

Значение по умолчанию зависит от используемой версии WS-Security. Значение по умолчанию - SignBeforeEncryptAndEncryptSignature, если используется WS-Security 1,1. Значение по умолчанию - SignBeforeEncrypt, если используется WS-Security 1.0.

Это атрибут типа MessageProtectionOrder.
messageSecurityVersion Необязательно. Задает используемую версию WS-Security. Допустимые значения.

- Windows SharePoint Services ecurity11WSTrustFebruary2005 Windows SharePoint Services ecureConversationFebruary2005 Windows SharePoint Services ecurityPolicy11
- Windows SharePoint Services ecurity10WSTrustFebruary2005 Windows SharePoint Services ecureConversationFebruary2005 Windows SharePoint Services ecurityPolicy11BasicSecurityProfile10
- Windows SharePoint Services ecurity11WSTrustFebruary2005 Windows SharePoint Services ecureConversationFebruary2005 Windows SharePoint Services ecurityPolicy11BasicSecurityProfile10

Значение по умолчанию - WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11, которое может быть выражено в формате XML просто как Default. Это атрибут типа MessageSecurityVersion.
requireDerivedKeys Логическое значение, которое указывает, могут ли ключи быть производными от исходных ключей проверки. Значение по умолчанию — true.
requireSecurityContextCancellation Необязательно. Логическое значение, определяющее, следует ли отменять и завершать контекст безопасности, когда он больше не нужен. Значение по умолчанию — true.
requireSignatureConfirmation Необязательно. Логическое значение, определяющее, включено ли подтверждение сигнатуры WS-Security. Если установлено значение true, то сигнатуры сообщений подтверждаются респондентом. Если пользовательская привязка настроена для использования взаимных сертификатов или выданных маркеров (привязки WSS 1.1), то этот атрибут имеет значение по умолчанию true. В противном случае значение по умолчанию — false.

Подтверждение сигнатуры используется для подтверждения того, что служба отвечает, получив запрос полностью.
securityHeaderLayout Необязательно. Определяет порядок расположения элементов в заголовке безопасности. Допустимы следующие значения:

- Strict: элементы добавляются в заголовок безопасности в соответствии с общим принципом "объявление перед использованием".
- Lax: элементы добавляются в заголовок безопасности в любом порядке, который подтверждает Windows SharePoint Services: безопасность сообщений SOAP.
- LaxWithTimestampFirst: элементы добавляются в заголовок безопасности в любом порядке, который подтверждает Windows SharePoint Services: безопасность SOAP Message, за исключением того, что первый элемент в заголовке безопасности должен быть элемент wsse:Timestamp.
- LaxWithTimestampLast: элементы добавляются в заголовок безопасности в любом порядке, который подтверждает Windows SharePoint Services: безопасность сообщений SOAP, за исключением того, что последний элемент в заголовке безопасности должен быть элемент wsse:Timestamp.

Значение по умолчанию — Strict.

Это элемент типа SecurityHeaderLayout.

Атрибут authenticationMode

значение Описание
Строка AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Атрибут defaultAlgorithm

значение Описание
Basic128 Используется шифрование Aes128, Sha1 для хэша и Rsa-oaep-mgf1p для шифрования ключа.
Basic192 Используется шифрование Aes192, Sha1 для хэша и Rsa-oaep-mgf1p для шифрования ключа.
Basic256 Используется шифрование Aes256, Sha1 для хэш-кода и Rsa-oaep-mgf1p для шифрования ключа.
Basic256Rsa15 Используется Aes256 для шифрования сообщения, Sha1 для хэш-кода и Rsa15 для шифрования ключа.
Basic192Rsa15 Используется Aes192 для шифрования сообщения, Sha1 для хэш-кода и Rsa15 для шифрования ключа.
TripleDes Используется шифрование TripleDes, Sha1 для хэш-кода и Rsa-oaep-mgf1p для шифрования ключа.
Basic128Rsa15 Используется Aes128 для шифрования сообщения, Sha1 для хэш-кода и Rsa15 для шифрования ключа.
TripleDesRsa15 Используется TripleDes для шифрования сообщения, Sha1 для хэш-кода и Rsa15 для шифрования ключа.
Basic128Sha256 Используйте Aes128 для шифрования сообщений Sha256 для дайджеста сообщений и rsa-oaep-mgf1p для упаковки ключей.
Basic192Sha256 Используется Aes192 для шифрования сообщения, Sha256 для хэш-кода и Rsa-oaep-mgf1p для шифрования ключа.
Basic256Sha256 Используется Aes256 для шифрования сообщения, Sha256 для хэша и Rsa-oaep-mgf1p для шифрования ключа.
TripleDesSha256 Используется TripleDes для шифрования сообщения, Sha256 для хэш-кода и Rsa-oaep-mgf1p для шифрования ключа.
Basic128Sha256Rsa15 Используется Aes128 для шифрования сообщения, Sha256 для хэш-кода и Rsa15 для шифрования ключа.
Basic192Sha256Rsa15 Используется Aes192 для шифрования сообщения, Sha256 для хэш-кода и Rsa15 для шифрования ключа.
Basic256Sha256Rsa15 Используется Aes256 для шифрования сообщения, Sha256 для хэша и Rsa15 для шифрования ключа.
TripleDesSha256Rsa15 Используется TripleDes для шифрования сообщения, Sha256 для хэш-кода и Rsa15 для шифрования ключа.

Дочерние элементы

Элемент Description
<issuedTokenParameters> Определяет текущий выданный маркер. Это элемент типа IssuedTokenParametersElement.
<localClient Параметры> Задает параметры безопасности локального клиента для этой привязки. Это элемент типа LocalClientSecuritySettingsElement.
<localService Параметры> Задает параметры безопасности локальной службы для этой привязки. Это элемент типа LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Задает значения по умолчанию, используемые для инициализации службы безопасного обмена данными.

Родительские элементы

Элемент Description
<Привязки> Определяет все возможности пользовательской привязки.

Замечания

Дополнительные сведения об использовании этого элемента см. в разделе "Режимы проверки подлинности SecurityBindingElement" и "Практическое руководство. Создание пользовательской привязки с помощью SecurityBindingElement".

Пример

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

Конфигурация службы определяет настраиваемую привязку, которая поддерживает обмен данными по протоколу TCP с защитой протоколом TLS/SSL и системой безопасности сообщений Windows. Пользовательская привязка использует сертификат службы для проверки подлинности службы на уровне транспорта и для защиты сообщений при передаче между клиентом и службой. Это достигается элементом привязки <sslStreamSecurity> . Сертификат службы настраивается с помощью поведения службы.

Кроме того, пользовательская привязка использует безопасность сообщений с типом учетных данных Windows, который является типом учетных данных по умолчанию. Это достигается элементом привязки безопасности . Если доступен механизм проверки подлинности Kerberos, то проверка подлинности как клиента, так и службы выполняется с использованием безопасности уровня сообщений. Если механизм проверки подлинности Kerberos недоступен, используется проверка подлинности NTLM. NTLM выполняет проверку подлинности клиента при подключении к службе, но не выполняет проверку подлинности службы при подключении к клиенту. Элемент привязки безопасности настроен для использования SecureConversation authenticationType, что приводит к созданию сеанса безопасности как для клиента, так и службы. Это требуется для обеспечения работы дуплексного контракта службы. Дополнительные сведения о запуске этого примера см. в разделе "Безопасность пользовательской привязки".

<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <host>
          <baseAddresses>
            <!-- use following base address -->
            <add baseAddress="net.tcp://localhost:8000/ServiceModelSamples/Service"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="Binding1"
                  contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
        <!-- the mex endpoint is exposed at net.tcp://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <!-- configure a custom binding -->
      <customBinding>
        <binding name="Binding1">
          <security authenticationMode="SecureConversation"
                    requireSecurityContextCancellation="true">
          </security>
          <textMessageEncoding messageVersion="Soap12WSAddressing10"
                               writeEncoding="utf-8" />
          <sslStreamSecurity requireClientCertificate="false" />
          <tcpTransport />
        </binding>
      </customBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceCredentials>
            <serviceCertificate findValue="localhost"
                                storeLocation="LocalMachine"
                                storeName="My"
                                x509FindType="FindBySubjectName" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

См. также