Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 | AnonymousForCertificateAnonymousForSslNegotiatedCertificateOverTransportIssuedTokenIssuedTokenForCertificateIssuedTokenForSslNegotiatedIssuedTokenOverTransportKerberosKerberosOverTransportMutualCertificateMutualCertificateDuplexMutualSslNegotiatedSecureConversationSspiNegotiatedUserNameForCertificateUserNameForSslNegotiatedUserNameOverTransportSspiNegotiatedOverTransport |
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>