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