Consideraciones de seguridad para sesiones seguras
Debe tener en cuenta los siguientes elementos que afectan a la seguridad al implementar sesiones seguras. Para obtener más información sobre las consideraciones de seguridad, consulte Consideraciones de seguridad y Procedimientos recomendados para la seguridad.
Sesiones seguras y metadatos
Cuando se establece una sesión segura y la propiedad RequireCancellation está establecida en false
, Windows Communication Foundation (WCF) envía una aserción mssp:MustNotSendCancel
como parte de los metadatos en el documento de lenguaje de descripción de servicios Web (WSDL) para el punto de conexión del servicio. La aserción mssp:MustNotSendCancel
informa a los clientes de que el servicio no responde a las solicitudes para cancelar la sesión segura. Cuando la propiedad RequireCancellation está establecida como true
, WCF no emite una aserción mssp:MustNotSendCancel
en el documento WSDL. Se espera que los clientes envíen una solicitud de cancelación al servicio cuando dejen de necesitar la sesión segura. Cuando se genera un cliente mediante la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe), el código del cliente reacciona de forma adecuada a la presencia o ausencia de la aserción mssp:MustNotSendCancel
.
Conversaciones seguras y tokens personalizados
Hay algunos problemas con la mezcla de tokens personalizados y claves derivadas debido a la manera en que se define en la especificación WS-SecureConversation. La especificación dice que wsse:SecurityTokenReference
es un elemento opcional que hace referencia al token derivado: "/wsc:DerivedKeyToken/wsse:SecurityTokenReference
Este elemento opcional se usa para especificar tokens de contexto de seguridad, tokens de seguridad o bien la clave compartida o el secreto que se usan para la derivación. Si no se especifica, se supone que el destinatario puede determinar la clave compartida a partir del contexto del mensaje. Si no se puede determinar el contexto, se producirá un error como wsc:UnknownDerivationSource
.
Esto significa que, si se desea derivar un token personalizado, se debería incluir el tipo de cláusula en un elemento SecurityTokenReference
. Hay una opción para desactivar la derivación, pero el valor predeterminado es derivar las claves. Si no se incluye la clave, la serialización del token de clave derivado se realiza correctamente, pero, al intentar deserializarlo, se produce una excepción.