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.