Federación y confianza

En este tema se tratan varios aspectos relativos a las aplicaciones federadas, los límites de confianza y configuración, así como el uso de tokens emitidos en Windows Communication Foundation (WCF).

Servicios, servicios de tokens de seguridad y confianza

Los servicios que exponen puntos de conexión federados esperan por lo general que los clientes se autentiquen utilizando un token proporcionado por un emisor concreto. Es importante que el servicio se configure con las credenciales correctas del emisor; de lo contrario, no podrá comprobar las signaturas sobre los tokens emitidos y el cliente no podrá comunicarse con el servicio. Para obtener más información sobre la configuración de credenciales de emisor en el servicio, consulte Procedimiento para configurar credenciales en un servicio de federación.

De manera similar, al utilizar las claves simétricas, las claves se cifran para el servicio de destino, por lo que debe configurar el servicio de tokens de seguridad con las credenciales correctas para el servicio de destino; de lo contrario, no podrá cifrar la clave para el servicio de destino y, de nuevo, el cliente no podrá comunicarse con el servicio.

Los servicios WCF usan el valor de la propiedad MaxClockSkew en SecurityBindingElement para permitir el sesgo de reloj entre el cliente y el servicio. En la federación, el valor MaxClockSkew se aplica a los desfases temporales entre el cliente y el servicio de tokens de seguridad de donde el cliente obtuvo el token emitido. Por consiguiente, los servicios de tokens de seguridad no necesitan realizar concesiones de sesgo de reloj al establecer los tiempos de inicio y expiración del token emitido.

Nota

La importancia de sesgo de reloj aumenta a medida que se reduce la vida del token emitido. En la mayoría de los casos, el sesgo del reloj no es un problema significativo si la duración del token es de 30 minutos o más. Los escenarios con duraciones más cortas o donde la hora de validez exacta del token es importante deberían estar diseñados para tener en cuenta el sesgo del reloj.

Extremos federados y tiempos de espera

Cuando un cliente se comunica con un punto de conexión federado, debe adquirir primero un token adecuado de un servicio de tokens de seguridad. Si el servicio de tokens de seguridad expone un punto de conexión federado, el cliente debe obtener primero un token del emisor para ese punto de conexión. Cada adquisición del token lleva tiempo y ese tiempo está sujeto al tiempo de espera total para enviar el mensaje real al extremo final.

Por ejemplo, el tiempo de espera en el canal del lado de cliente está establecido en 30 segundos. Se ha de llamar a dos emisores de tokens para recuperar los tokens antes de enviar el mensaje al último punto de conexión y cada uno tarda 15 segundos en emitir un token. En este caso, no se realizará el intento correctamente y se produce una TimeoutException. Por tanto, debe establecer el valor OperationTimeout en el canal de cliente en un valor lo suficientemente grande como para incluir el tiempo que se tarda en recuperar todos los tokens emitidos. En el caso en el que no se especifique un valor para la propiedad OperationTimeout, la propiedad OpenTimeout o la propiedad (o ambas) SendTimeout han de establecerse en un valor lo suficientemente grande como para incluir el tiempo invertido en recuperar todos los tokens emitidos.

Duración y renovación del token

Los clientes WCF no comprueban el token emitido cuando realizan una solicitud inicial a un servicio. En su lugar, WCF confía en el servicio de token de seguridad para emitir un token con tiempos de vigencia y expiración adecuados. Si el cliente almacena el token en memoria caché y lo reutiliza, la duración del token se comprueba en las solicitudes subsiguientes y el cliente renueva automáticamente el token si fuese necesario. Para obtener más información sobre el almacenamiento en caché de tokens, consulte Procedimiento para crear un cliente federado.

La especificación de duraciones cortas, en el orden de 30 segundos o menos para tokens emitidos o tokens de contexto de seguridad, puede dar lugar a tiempos de espera de negociación o bien a que los clientes WCF produzcan excepciones al solicitar tokens emitidos o al negociar o renovar tokens de contexto de seguridad.

Tokens emitidos e InclusionMode

Que un token emitido se serialice o no en un mensaje enviado desde un cliente hasta un extremo federado, se controla estableciendo la propiedad InclusionMode de la clase SecurityTokenParameters. Esta propiedad puede estar establecida en uno de los SecurityTokenInclusionMode valores de enumeración, pero no es útil en la mayoría de los escenarios federados. Los valores SecurityTokenInclusionMode.Never y SecurityTokenInclusionMode.AlwaysToInitiator hacen que el cliente envíe una referencia al token emitido por el servicio de tokens de seguridad al usuario de confianza. A menos que el usuario de confianza posea una copia del token emitido, se producirá un error en la autenticación porque la referencia del token no se puede resolver. WCF trata a SecurityTokenInclusionMode.Once como un equivalente a SecurityTokenInclusionMode.AlwaysToRecipient.

Consulte también