Federación y confianza
En este tema se cubren varios aspectos relacionados con las aplicaciones federadas, los límites de confianza y configuración y el uso de tokens emitidos en Windows Communication Foundation (WCF).
Servicios, servicios de tokens de seguridad y confianza
Los servicios que exponen extremos 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 firmas sobre los tokens emitidos y el cliente no podrá comunicarse con el servicio. Para obtener más información sobre configuración de las credenciales del emisor en el servicio, vea Cómo: Configurar las 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 de WCF utilizan 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 extremo federado, debe adquirir primero un token adecuado de un servicio de tokens de seguridad. Si el servicio de tokens de seguridad expone un extremo federado, el cliente debe obtener primero un token del emisor para ese extremo. 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 extremo 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 de WCF no comprueban el token emitido al hacer una solicitud inicial a un servicio. En su lugar, WCF confía en el servicio de tokens de seguridad para emitir un token con tiempos adecuados de inicio y expiración. 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 almacenamiento de tokens en memoria caché, vea Cómo crear un cliente federado.
Si se especifican duraciones cortas, del orden de 30 segundos o menos para tokens emitidos o tokens de contextos de seguridad, puede provocar que se agoten los tiempos de espera de las negociaciones o que los clientes de WCF produzcan excepciones al solicitar tokens emitidos al negociar o renovar los 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 SecurityTokenInclusionMode.Once como equivalente a SecurityTokenInclusionMode.AlwaysToRecipient.
Vea también
Tareas
Cómo crear un cliente federado
Cómo: Configurar las credenciales en un servicio de federación
Cómo: Crear un WSFederationHttpBinding