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


<security> для <customBinding>

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

Иерархия схемы

<system.serviceModel>
  <bindings>
    <customBinding>
      <binding>
        <security> для <customBinding>

Синтаксис

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

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

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

Атрибуты

Атрибут Описание

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. Допустимы следующие значения:

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11

  • WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

  • WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Значение по умолчанию — WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11, которое может быть выражено в формате XML просто как Default. Это атрибут типа MessageSecurityVersion.

requireDerivedKeys

Логическое значение, которое указывает, могут ли ключи быть производными от исходных ключей проверки. Значение по умолчанию — true.

requireSecurityContextCancellation

Необязательный. Логическое значение, определяющее, следует ли отменять и завершать контекст безопасности, когда он больше не нужен. Значение по умолчанию — true.

requireSignatureConfirmation

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

Подтверждение сигнатуры используется для подтверждения того, что служба отвечает, получив запрос полностью.

securityHeaderLayout

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

  • Strict: элементы добавляются в заголовок безопасности в соответствии с общим принципом «объявить перед использованием».

  • Lax: элементы добавляются в заголовок безопасности в любом порядке, отвечающем требованиям безопасности сообщений WSS: SOAP.

  • LaxWithTimestampFirst: элементы добавляются в заголовок безопасности в любом порядке, соответствующем требованиям безопасности сообщений WSS: SOAP, за исключением того, что первым элементом должен быть wsse:Timestamp.

  • LaxWithTimestampLast: элементы добавляются в заголовок безопасности в любом порядке, соответствующем требованиям безопасности сообщений WSS: SOAP, за исключением того, что последним элементом должен быть wsse:Timestamp.

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

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

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

Элемент Описание

<issuedTokenParameters>

Определяет текущий выданный маркер. Это элемент типа IssuedTokenParametersElement.

Элемент <localClientSettings>

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

Элемент <localServiceSettings>

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

<secureConversationBootstrap>

Задает значения по умолчанию, используемые для инициализации службы безопасного обмена данными.

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

Элемент Описание

<binding>

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

Замечания

Дополнительные сведения применении этого элемента см. в разделах SecurityBindingElement Authentication Modes и How To: Create a Custom Binding Using the SecurityBindingElement.

Пример

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

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

В дополнение к этому настраиваемая привязка использует безопасность сообщений с типом учетных данных Windows — это тип учетных данных по умолчанию. Это достигается с помощью элемента привязки <security> для <customBinding>. Если доступен механизм проверки подлинности Kerberos, то проверка подлинности как клиента, так и службы выполняется с использованием безопасности уровня сообщений. Если механизм проверки подлинности Kerberos недоступен, используется проверка подлинности NTLM. NTLM выполняет проверку подлинности клиента при подключении к службе, но не выполняет проверку подлинности службы при подключении к клиенту. Элемент привязки <security> для <customBinding> настраивается на использование authenticationType SecureConversation, что приводит к созданию сеанса безопасности как на стороне, клиента, так и на стороне службы. Это требуется для обеспечения работы дуплексного контракта службы. Дополнительные сведения о выполнении этого примера см. в разделе Custom Binding Security.

<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>

См. также

Справочник

<customBinding>
SecurityElement
SecurityBindingElement
CustomBinding

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

Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings
How To: Create a Custom Binding Using the SecurityBindingElement
Custom Binding Security