Como rastrear cookies fedauth WIF expirados?

Estou com um problema interessante ao tentar acompanhar as sessões / cookies de autenticação WIF expirados.

Como pano de fundo: o site é MVC 3, usa o Windows Identity Foundation (WIF) que confia em um servidor ADFS como um STS. Todo o site está protegido por SSL. O STS tem a validade do token definida como 60 minutos.

Quando um usuário sai manualmente, simplesmente chamamos o método SignOut no módulo FedAuth:

FederatedAuthentication.WSFederationAuthenticationModule.SignOut(false);

Obviamente, isso remove os cookies FedAuth, mas é aqui que o problema começa. Se eu capturar esses cookies com o Fiddler, posso apresentá-los novamente ao site dentro do prazo de validade e continuar sendo tratado como logado.

Percebo que isso está sendo realizado a partir de uma posição privilegiada do navegador, que aceitou o violinista como proxy ... mas o cliente está preocupado com o fato de esses cookies de autenticação que não estão realmente expirando apresentarem um risco significativo à segurança. Eles não estão convencidos de que o SSL proteja o site suficientemente e que, se um invasor puder executar um ataque MITM, poderá usar esses cookies depois que o usuário achar que está desconectado.

Expliquei que, se estiverem vulneráveis após o logout, estarão vulneráveis durante o logon, mas não se importam ...

Portanto, procurei maneiras de garantir que, uma vez que um usuário efetue logoff, os cookies fedauth associados a essa sessão de logon sejam tratados como vencidos. Os manipuladores WIF não parecem ter um mecanismo interno para rastrear tokens expirados e não encontrei mais nada relacionado a isso.

Eu acho que esse é de fato um problema maior -> como detectar cookies expirados em geral? Um cookie válido é um cookie válido!

A solução óbvia é rastrear esses cookies após o logout de alguma forma, mas eu gostaria de evitar a rota do código personalizado, se possível; como noob, muita literatura de segurança diz para evitar a codificação personalizada de qualquer tipo de mecânica de sessão, pois você provavelmente entenderá errado!

Alguém está ciente de alguma solução padrão no ASP.NET para esse problema?

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion