Elemento <security> de <customBinding>
Especifica las opciones de seguridad de un enlace personalizado.
<<system.serviceModel>>
<enlaces>
<customBinding>
<enlace>
Elemento <security> de <customBinding>
<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
Atributos
Atributo | Descripción |
---|---|
allowSerializedSigningTokenOnReply |
Opcional. Un valor booleano que especifica si un token serializado se puede usar como respuesta. |
authenticationMode |
Opcional. Especifica el modo de autenticación utilizado entre el iniciador y el contestador. 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 Basic128. Se utiliza este atributo al trabajar con una plataforma diferente que opta por un conjunto de algoritmos diferente que el valor predeterminado. Debería ser consciente de los puntos fuertes y débiles de los algoritmos pertinentes al realizar modificaciones en este valor. Este atributo es del tipo SecurityAlgorithmSuite. El valor predeterminado es Aes256. |
includeTimestamp |
Un valor booleano que especifica si las marcas de tiempo están incluidas 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 es SignBeforeEncrypt. Este atributo es del tipo MessageProtectionOrder. |
messageSecurityVersion |
Opcional. Establece la versión de Seguridad del WS 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 contestador confirma las firmas del mensaje. El valor predeterminado es false. La confirmación de la firma se utiliza para confirmar que el servicio está respondiendo por completo al conocimiento de 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. |
Comentarios
Para obtener más información acerca de 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 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>
Consulte 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