Compartir a través de


Elemento <security> de <customBinding>

Especifica las opciones de seguridad de un enlace personalizado.

Jerarquía del esquema

<<system.serviceModel>>
  <enlaces>
    <customBinding>
      <binding>
        Elemento <security> de <customBinding>

Sintaxis

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

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 indicados en la especificación Lenguaje de directiva de seguridad (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 son 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. El valor predeterminado es SignBeforeEncryptAndEncryptSignature cuando se use WS-Security 1.1 y 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 son 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: los elementos se agregan 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 primer elemento en el encabezado de seguridad debe ser un elemento wsse:Timestamp.

El valor predeterminado es Strict.

Este elemento es del tipo SecurityHeaderLayout.

Elementos secundarios

Elemento Descripción

<IssuedTokenParameters>

Especifica un token emitido actual. Este elemento es del tipo IssuedTokenParametersElement.

<localClientSettings> (elemento)

Especifica la configuración de seguridad de un cliente local para este enlace. Este elemento es del tipo LocalClientSecuritySettingsElement.

<localServiceSettings> (elemento)

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 funciones de enlace del enlace personalizado.

Notas

Para obtener más información sobre cómo usar este elemento, vea SecurityBindingElement Authentication Modes y How To: Create a Custom Binding Using the 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 del 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 <sslStreamSecurity>. El certificado del servicio se configura utilizando un comportamiento del servicio.

Además, el enlace personalizado utiliza el modo de seguridad con tipo de credencial de Windows -éste es el tipo de credencial predeterminado-. Esto lo lleva a cabo el elemento de enlace Elemento <security> de <customBinding>. Cliente y 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 Elemento <security> de <customBinding> 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 la ejecución de este ejemplo, vea 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>

Vea también

Referencia

<customBinding>
SecurityElement
SecurityBindingElement
CustomBinding

Otros recursos

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