<security> de <customBinding>

Especifica las opciones de seguridad de un enlace personalizado.

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

Sintaxis

<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 siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios

Atributos

Atributo Descripción
allowSerializedSigningTokenOnReply Opcional. Valor booleano que especifica si un token serializado se puede usar como respuesta. El valor predeterminado es false. Cuando use un enlace dual, el valor de la configuración predeterminada es true y se ignoran los cambios de configuración realizados.
authenticationMode Opcional. Especifica el modo de autenticación utilizado entre el iniciador y el respondedor. A continuación encontrará todos los valores.

El valor predeterminado es sspiNegotiated.
defaultAlgorithmSuite Opcional. Establece el cifrado de mensajes y los algoritmos de encapsulado de claves. La clase SecurityAlgorithmSuite determina los algoritmos y los tamaños de clave. Estos algoritmos se asignan a los que se indican en la especificación Security Policy Language (WS-SecurityPolicy).

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

Se utiliza este atributo al trabajar con una plataforma diferente que opta por un conjunto de algoritmos diferente que el valor predeterminado. Debe tener presentes las ventajas y desventajas de los algoritmos relevantes al efectuar modificaciones en esta configuración. Este atributo es del 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 manera en que se calculan las claves para proteger mensajes. Las claves pueden estar basadas en el material de clave de cliente únicamente, en el servicio de material clave, o en una combinación de ambos. Los valores válidos son

- ClientEntropy: La clave de sesión está basada en los datos clave proporcionados por el cliente.
- ServerEntropy: La clave de sesión está basada en los datos clave proporcionados por el servidor.
- CombinedEntropy: La clave de sesión está basada en los datos clave proporcionados por el cliente y servicio.

El valor predeterminado es CombinedEntropy.

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

- SignBeforeEncrypt: Firme primero, a continuación, cifre.
- SignBeforeEncryptAndEncryptSignature: Firme primero, cifre, a continuación, cifre la firma.
- EncryptBeforeSign: Cifre primero, a continuación, firme.

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

Este atributo es del tipo MessageProtectionOrder.
messageSecurityVersion Opcional. Establece la versión de WS-Security que se utiliza. Los valores válidos incluyen los siguientes:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

El valor predeterminado es WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 y se expresa en el XML como simplemente Default. Este atributo es del tipo MessageSecurityVersion.
requireDerivedKeys Un valor booleano que especifica si las claves se pueden derivar de las claves de prueba originales. El valor predeterminado es true.
requireSecurityContextCancellation Opcional. Un valor booleano que especifica si el contexto de seguridad debería ser cancelado y finalizado cuando no sea necesario. El valor predeterminado es true.
requireSignatureConfirmation Opcional. Un valor booleano que especifica si la confirmación de la firma de Seguridad del WS está habilitada. Cuando se establece en true, el respondedor confirma las firmas del mensaje. Cuando se configura el enlace personalizado para certificados mutuos o para usar los tokens (enlaces de WSS 1.1) emitidos, el valor predeterminado de este atributo es true. De lo contrario, el valor predeterminado es false.

La confirmación de la firma se utiliza para confirmar que el servicio está respondiendo perfectamente a una solicitud.
securityHeaderLayout Opcional. Especifica la clasificación de los elementos en el encabezado de seguridad. Los valores válidos son

- Strict: Se agregan elementos al encabezado de seguridad según el principio general de "declarar antes de usar".
- Lax: Los elementos se agregan al encabezado de seguridad en cualquier orden que confirme WSS: SOAP Message Security.
- LaxWithTimestampFirst: Los elementos se agregan al encabezado de seguridad en cualquier orden que confirme WSS: SOAP Message Security, solo que el primer elemento en el encabezado de seguridad debe ser un elemento wsse:Timestamp.
- LaxWithTimestampLast: Los elementos se agregan al encabezado de seguridad en cualquier orden que confirme WSS: SOAP Message Security, solo que el último elemento en el encabezado de seguridad debe ser un elemento wsse:Timestamp.

El valor predeterminado es Strict.

Este elemento es del tipo SecurityHeaderLayout.

Atributo authenticationMode

Valor Descripción
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Atributo defaultAlgorithm

Valor Descripción
Basic128 Utilice el cifrado Aes128, Sha1 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic192 Utilice el cifrado Aes192, Sha1 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic256 Utilice el cifrado Aes256, Sha1 para la síntesis del mensaje y Rsa-oaep-mgf1p para el cifrado de claves.
Basic256Rsa15 Utilice Aes256 para el cifrado de mensajes, Sha1 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
Basic192Rsa15 Utilice Aes192 para el cifrado de mensajes, Sha1 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
TripleDes Utilice el cifrado TripleDes, Sha1 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic128Rsa15 Utilice Aes128 para el cifrado de mensajes, Sha1 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
TripleDesRsa15 Utilice el cifrado TripleDes, Sha1 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
Basic128Sha256 Utilice Aes128 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic192Sha256 Utilice Aes192 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic256Sha256 Utilice Aes256 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
TripleDesSha256 Utilice TripleDes para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa-oaep-mgf1p para el encapsulado de claves.
Basic128Sha256Rsa15 Utilice Aes128 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
Basic192Sha256Rsa15 Utilice Aes192 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
Basic256Sha256Rsa15 Utilice Aes256 para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.
TripleDesSha256Rsa15 Utilice TripleDes para el cifrado de mensajes, Sha256 para la síntesis del mensaje y Rsa15 para el encapsulado de claves.

Elementos secundarios

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

Elementos primarios

Elemento Descripción
<binding> Define todas las funcionalidades de enlace del enlace personalizado.

Comentarios

Para obtener más información sobre el uso de este elemento, vea Modos de autenticación de SecurityBindingElement y Cómo: Crear un enlace personalizado con SecurityBindingElement.

Ejemplo

El ejemplo siguiente muestra cómo configurar la seguridad mediante un enlace personalizado. Muestra cómo utilizar un enlace personalizado para habilitar la seguridad de nivel de mensaje junto con un transporte seguro. Esto es útil cuando se exige un transporte seguro que transmita los mensajes entre el cliente y servicio y simultáneamente los mensajes deben ser seguros en el nivel de mensaje. Los enlaces proporcionados por el sistema no admiten esta configuración.

La configuración de servicio define un enlace personalizado que admite la protección de la comunicación del TCP utilizando TLS/protocolo SSL y modo de seguridad de Windows. El enlace personalizado utiliza 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 servicio. Esto lo lleva a cabo el elemento de enlace de <sslStreamSecurity>. El certificado del servicio se configura utilizando un comportamiento del servicio.

Además, el enlace personalizado utiliza seguridad de mensajes con tipo de credencial de Windows; éste es el tipo de credencial predeterminado. Esto lo lleva a cabo el elemento de enlace de seguridad. El cliente y el servicio se autentican utilizando la seguridad del nivel de mensaje si el mecanismo de autenticación Kerberos está disponible. Si el mecanismo de autenticación Kerberos no está disponible, se utiliza la autenticación NTLM. NTLM autentica el cliente al servicio pero no autentica el servicio al cliente. El elemento de enlace de seguridad se configura para utilizar authenticationType SecureConversation, lo que resulta en la creación de una sesión de seguridad en el cliente y el servicio. Esto se exige para que funcione el contrato del dúplex del servicio. Para obtener más información sobre cómo ejecutar este ejemplo, vea Seguridad de enlace personalizada.

<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