Compartilhar via


Federação e confiabilidade

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

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 do emissor; caso contrário, ele não poderá verificar assinaturas com os tokens emitidos e o cliente não poderá se comunicar com o serviço. Para obter mais informações sobre como configurar credenciais do emissor no serviço, confira 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 do serviço de destino; caso contrário, não será possível criptografar a chave do 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 MaxClockSkew no SecurityBindingElement para permitir a defasagem de tempo entre o cliente e o serviço. Na federação, a configuração MaxClockSkew se aplica a defasagens de tempo 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 defasagem de tempo ao definir os tempos efetivo e de validade do token emitido.

Observação

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

Pontos de extremidade federados e tempos limite

Ao se comunicar com um ponto de extremidade federado, o cliente deve primeiro adquirir um token apropriado de um serviço de token de segurança. Se o serviço de token de segurança expuser um ponto de extremidade federado, o cliente deverá primeiro obter um token do emissor desse ponto de extremidade. A aquisição de token leva tempo e esse tempo está sujeito ao tempo limite geral de envio da mensagem real para o ponto de extremidade final.

Por exemplo, o tempo limite no canal do lado 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. Nesse caso, a tentativa falhará e uma TimeoutException será lançada. Portanto, você precisa definir o valor de OperationTimeout no canal do cliente como um valor grande o suficiente para incluir o tempo necessário para recuperar todos os tokens emitidos. Caso um valor não seja especificado para a propriedade OperationTimeout será necessário definir a propriedade OpenTimeout ou SendTimeout (ou ambas)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 os tempos de validade e efetivos apropriados. Se o token for armazenado em cache pelo cliente e reutilizado, o tempo de vida dele será verificado nas solicitações posteriores e o cliente renovará automaticamente o token, se necessário. Para obter mais informações sobre o cache de token, confira Como criar um cliente federado.

Especificar tempos de vida curtos (30 segundos ou menos para tokens emitidos ou tokens de contexto de segurança) pode resultar em tempos limite de negociação ou em outras exceções geradas pelos 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 pela configuração da propriedade InclusionMode da classe SecurityTokenParameters. Essa propriedade pode ser definida como um dos valores da enumeração SecurityTokenInclusionMode, mas não é útil na maioria dos cenários federados. Os valores SecurityTokenInclusionMode.Never 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 tenha uma cópia do token emitido, a autenticação falhará, pois a referência do token não é resolvível. O WCF trata SecurityTokenInclusionMode.Once como equivalente a SecurityTokenInclusionMode.AlwaysToRecipient.

Confira também