Partilhar via


Federação e Confiança

Este tópico aborda vários aspetos relacionados a aplicativos federados, limites e configuração de confiança e uso de tokens emitidos no Windows Communication Foundation (WCF).

Serviços, Serviços de Token de Segurança e Confiança

Os serviços que expõem pontos de extremidade federados normalmente esperam que os clientes se autentiquem usando um token fornecido por um emissor específico. É importante que o serviço esteja configurado com as credenciais corretas para o emissor; caso contrário, ele não poderá verificar assinaturas sobre os tokens emitidos e o cliente não poderá se comunicar com o serviço. Para obter mais informações sobre como configurar credenciais de emissor no serviço, consulte Como configurar credenciais em um serviço de federação.

Da mesma forma, ao usar chaves simétricas, as chaves são criptografadas para o serviço de destino, portanto, você deve configurar o serviço de token de segurança com as credenciais corretas para o serviço de destino; caso contrário, ele não poderá criptografar a chave para o serviço de destino e, novamente, o cliente não poderá se comunicar com o serviço.

Os serviços WCF usam o valor da propriedade no SecurityBindingElement para permitir a distorção do MaxClockSkew relógio entre o cliente e o serviço. Na federação, a MaxClockSkew configuração se aplica a distorções de relógio entre o cliente e o serviço de token de segurança de onde o cliente obteve o token emitido. Portanto, os serviços de token de segurança não precisam fazer concessões de distorção de relógio ao definir os tempos efetivos e de expiração do token emitido.

Nota

A importância da distorção do relógio aumenta à medida que a vida útil do token emitido diminui. Na maioria dos casos, a distorção do relógio não é um problema significativo se a vida útil do token for de 30 minutos ou mais. Cenários com tempos de vida mais curtos ou em que o tempo exato de validade do token é importante devem ser projetados para levar em conta a distorção do relógio.

Pontos de extremidade federados e tempos limite

Quando um cliente se comunica com um ponto de extremidade federado, ele deve primeiro adquirir um token apropriado de um serviço de token de segurança. Se o serviço de token de segurança expõe um ponto de extremidade federado, o cliente deve primeiro obter um token do emissor para esse ponto de extremidade. Cada aquisição de token leva tempo, e esse tempo está sujeito ao tempo limite geral para enviar a mensagem real para o ponto de extremidade final.

Por exemplo, o tempo limite no canal do lado do cliente é definido como 30 segundos. Dois emissores de token precisam ser chamados para recuperar tokens antes de enviar a mensagem para o ponto de extremidade final, e cada um leva 15 segundos para emitir um token. Neste caso, a tentativa falhará e um TimeoutException é lançado. Assim, você precisa definir o OperationTimeout valor no canal do cliente para um valor grande o suficiente para incluir o tempo necessário para recuperar todos os tokens emitidos. No caso em que um valor não é especificado para a OperationTimeout propriedade, a OpenTimeout propriedade ou a SendTimeout propriedade (ou ambas) precisa ser definida como um valor grande o suficiente para incluir o tempo necessário para recuperar todos os tokens emitidos.

Tempo de vida e renovação do token

Os clientes WCF não verificam o token emitido ao fazer uma solicitação inicial para um serviço. Em vez disso, o WCF confia no serviço de token de segurança para emitir um token com tempos efetivos e de expiração apropriados. Se o token for armazenado em cache pelo cliente e reutilizado, o tempo de vida do token será verificado em solicitações subsequentes e o cliente renovará automaticamente o token, se necessário. Para obter mais informações sobre cache de token, consulte Como criar um cliente federado.

A especificação de tempos de vida curtos, na ordem de 30 segundos ou menos para tokens emitidos ou tokens de contexto de segurança, pode resultar em tempos limite de negociação ou outras exceções sendo lançadas por clientes WCF ao solicitar tokens emitidos ou ao negociar ou renovar tokens de contexto de segurança.

Tokens emitidos e InclusionMode

Se um token emitido é serializado em uma mensagem enviada de um cliente para um ponto de extremidade federado ou não, é controlado definindo a InclusionModeSecurityTokenParameters propriedade da classe. Essa propriedade pode ser definida como um dos SecurityTokenInclusionMode valores de enumeração, mas não é útil na maioria dos cenários federados. Os SecurityTokenInclusionMode.Never valores e SecurityTokenInclusionMode.AlwaysToInitiator fazem com que o cliente envie uma referência ao token emitido pelo serviço de token de segurança para a terceira parte confiável. A menos que a terceira parte confiável possua uma cópia do token emitido, a autenticação falhará porque a referência do token não pode ser resolvida. WCF trata SecurityTokenInclusionMode.Once como equivalente a SecurityTokenInclusionMode.AlwaysToRecipient.

Consulte também