Compartir a través de


<security> de <customBinding>

Especifica las opciones de seguridad de un enlace personalizado.

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <security>

Syntax

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

Atributos y elementos

En las secciones siguientes se describen los atributos, los elementos secundarios y los elementos primarios.

Attributes

Atributo Description
allowSerializedSigningTokenOnReply Optional. Valor booleano que especifica si se puede usar un token serializado en la respuesta. El valor predeterminado es false. Cuando se usa un enlace dual, se omitirán los valores predeterminados true de la configuración y cualquier configuración realizada.
authenticationMode Optional. Especifica el modo de autenticación utilizado entre el iniciador y el respondedor. Consulte a continuación todos los valores.

El valor predeterminado es sspiNegotiated.
defaultAlgorithmSuite Optional. Establece el cifrado de mensajes y los algoritmos de encapsulado de claves. La clase determina SecurityAlgorithmSuite los algoritmos y los tamaños de clave. Estos algoritmos se asignan a los especificados en la especificación lenguaje de directiva de seguridad (WS-SecurityPolicy).

A continuación se muestran los valores posibles. El valor predeterminado es Basic256.

Este atributo se usa al trabajar con una plataforma diferente que opte por un conjunto de algoritmos distintos de los predeterminados. Debe tener en cuenta los puntos fuertes y débiles de los algoritmos pertinentes al realizar modificaciones en esta configuración. Este atributo es de tipo SecurityAlgorithmSuite.
includeTimestamp Valor booleano que especifica si las marcas de tiempo se incluyen en cada mensaje. El valor predeterminado es true.
keyEntropyMode Especifica la forma en que se calculan las claves para proteger los mensajes. Las claves solo se pueden basar en el material de clave de cliente, solo en el material de clave de servicio o en una combinación de ambos. Los valores válidos son

- ClientEntropy: la clave de sesión se basa en los datos de clave proporcionados por el cliente.
- ServerEntropy: la clave de sesión se basa en los datos de clave proporcionados por el servidor.
- CombinedEntropy: la clave de sesión se basa en los datos de clave proporcionados por el cliente y el servicio.

El valor predeterminado es CombinedEntropy.

Este atributo es de tipo SecurityKeyEntropyMode.
messageProtectionOrder Establece el orden en el que se aplican los algoritmos de seguridad de nivel de mensaje al mensaje. Entre los valores válidos se incluyen los siguientes:

- SignBeforeEncrypt: firme primero y, a continuación, cifre.
- SignBeforeEncryptAndEncryptSignature: firme primero, cifre y, a continuación, cifre la firma.
- EncryptBeforeSign: cifrar primero y, a continuación, firmar.

El valor predeterminado depende de la versión de WS-Security que se use. El valor predeterminado es SignBeforeEncryptAndEncryptSignature cuando se usa WS-Security 1.1. El valor predeterminado es cuando se SignBeforeEncrypt usa WS-Security 1.0.

Este atributo es de tipo MessageProtectionOrder.
messageSecurityVersion Optional. Establece la versión de WS-Security que se usa. Entre los valores válidos se incluyen los siguientes:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

El valor predeterminado es WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 y se puede expresar en el XML como simplemente Default. Este atributo es de tipo MessageSecurityVersion.
requireDerivedKeys Valor booleano que especifica si las claves se pueden derivar de las claves de prueba originales. El valor predeterminado es true.
requireSecurityContextCancellation Optional. Valor booleano que especifica si se debe cancelar y finalizar el contexto de seguridad cuando ya no sea necesario. El valor predeterminado es true.
requireSignatureConfirmation Optional. Valor booleano que especifica si WS-Security confirmación de firma está habilitada. Cuando se establece en true, el respondedor confirma las firmas de mensaje. Cuando el enlace personalizado está configurado para certificados mutuos o se configura para usar tokens emitidos (enlaces WSS 1.1), este atributo tiene truecomo valor predeterminado . De lo contrario, el valor predeterminado es false.

La confirmación de firma se usa para confirmar que el servicio responde al conocimiento completo de una solicitud.
securityHeaderLayout Optional. Especifica el orden de los elementos del encabezado de seguridad. Los valores válidos son

- Strict: los elementos se agregan al encabezado de seguridad según el principio general de "declarar antes de su uso".
- Lax: los elementos se agregan al encabezado de seguridad en cualquier orden que confirme a WSS: seguridad del mensaje SOAP.
- LaxWithTimestampFirst: los elementos se agregan al encabezado de seguridad en cualquier orden que confirme a WSS: seguridad del mensaje SOAP, excepto que el primer elemento del encabezado de seguridad debe ser un elemento wsse:Timestamp.
- LaxWithTimestampLast: los elementos se agregan al encabezado de seguridad en cualquier orden que confirme a WSS: seguridad del mensaje SOAP, excepto que el último elemento del encabezado de seguridad debe ser un elemento wsse:Timestamp.

El valor predeterminado es Strict.

Este elemento es de tipo SecurityHeaderLayout.

Atributo authenticationMode

Importancia Description
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Atributo defaultAlgorithm

Importancia Description
Basic128 Use el cifrado Aes128, Sha1 para la síntesis de mensajes y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic192 Use el cifrado Aes192, Sha1 para la síntesis de mensajes, Rsa-oaep-mgf1p para el encapsulado de claves.
Basic256 Use el cifrado Aes256, Sha1 para la síntesis de mensajes, Rsa-oaep-mgf1p para el encapsulado de claves.
Basic256Rsa15 Use Aes256 para el cifrado de mensajes, Sha1 para la síntesis de mensajes y Rsa15 para el encapsulado de claves.
Basic192Rsa15 Use Aes192 para el cifrado de mensajes, Sha1 para la síntesis de mensajes y Rsa15 para el encapsulado de claves.
Tripledes Use el cifrado TripleDes, Sha1 para la síntesis de mensajes, Rsa-oaep-mgf1p para el encapsulado de claves.
Basic128Rsa15 Use Aes128 para el cifrado de mensajes, Sha1 para la síntesis de mensajes y Rsa15 para el ajuste de claves.
TripleDesRsa15 Use el cifrado TripleDes, Sha1 para la síntesis de mensajes y Rsa15 para el ajuste de claves.
Basic128Sha256 Use Aes128 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic192Sha256 Use Aes192 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic256Sha256 Use Aes256 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa-oaep-mgf1p para el encapsulado de claves.
TripleDesSha256 Use TripleDes para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic128Sha256Rsa15 Use Aes128 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa15 para el ajuste de claves.
Basic192Sha256Rsa15 Use Aes192 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa15 para el ajuste de claves.
Basic256Sha256Rsa15 Use Aes256 para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa15 para el ajuste de claves.
TripleDesSha256Rsa15 Use TripleDes para el cifrado de mensajes, Sha256 para la síntesis de mensajes y Rsa15 para el ajuste de claves.

Elementos secundarios

Elemento Description
<issuedTokenParameters> Especifica un token emitido actual. Este elemento es de tipo IssuedTokenParametersElement.
<localClientSettings> Especifica la configuración de seguridad de un cliente local para este enlace. Este elemento es de tipo LocalClientSecuritySettingsElement.
<localServiceSettings> Especifica la configuración de seguridad de un servicio local para este enlace. Este elemento es de tipo LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Especifica los valores predeterminados que se usan para iniciar un servicio de conversación seguro.

Elementos primarios

Elemento Description
<encuadernación> Define todas las funcionalidades de enlace del enlace personalizado.

Observaciones

Para obtener más información sobre el uso de este elemento, vea SecurityBindingElement Authentication Modes y How to: Create a Custom Binding Using the SecurityBindingElement.

Example

En el ejemplo siguiente se muestra cómo configurar la seguridad mediante un enlace personalizado. Muestra cómo usar un enlace personalizado para habilitar la seguridad de nivel de mensaje junto con un transporte seguro. Esto resulta útil cuando se requiere un transporte seguro para transmitir los mensajes entre el cliente y el servicio y simultáneamente los mensajes deben estar seguros en el nivel de mensaje. Esta configuración no es compatible con enlaces proporcionados por el sistema.

La configuración del servicio define un enlace personalizado que admite la comunicación TCP protegida mediante el protocolo TLS/SSL y la seguridad de mensajes de Windows. El enlace personalizado usa un certificado de servicio para autenticar el servicio en el nivel de transporte y proteger los mensajes durante la transmisión entre el cliente y el servicio. Esto se logra mediante el <elemento de enlace sslStreamSecurity> . El certificado del servicio se configura mediante un comportamiento de servicio.

Además, el enlace personalizado usa la seguridad de mensajes con el tipo de credencial de Windows: este es el tipo de credencial predeterminado. Esto se logra mediante el elemento de enlace de seguridad . Tanto el cliente como el servicio se autentican mediante la seguridad de nivel de mensaje si el mecanismo de autenticación Kerberos está disponible. Si el mecanismo de autenticación Kerberos no está disponible, se usa la autenticación NTLM. NTLM autentica el cliente en el servicio, pero no autentica el servicio en el cliente. El elemento de enlace de seguridad está configurado para usar SecureConversation authenticationType, lo que da como resultado la creación de una sesión de seguridad tanto en el cliente como en el servicio. Esto es necesario para permitir que el contrato dúplex del servicio funcione. Para obtener más información sobre cómo ejecutar este ejemplo, vea Seguridad de enlace personalizado.

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

Consulte también