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
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:
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:
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
El valor predeterminado es Strict. Este elemento es del tipo SecurityHeaderLayout. |
Elementos secundarios
Elemento | Descripción |
---|---|
Especifica un token emitido actual. Este elemento es del tipo IssuedTokenParametersElement. |
|
Especifica la configuración de seguridad de un cliente local para este enlace. Este elemento es del tipo LocalClientSecuritySettingsElement. |
|
Especifica la configuración de seguridad de un servicio local para este enlace. Este elemento es del tipo LocalServiceSecuritySettingsElement. |
|
Especifica los valores predeterminados usados para iniciar un servicio de conversación seguro. |
Elementos primarios
Elemento | Descripción |
---|---|
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