【发布时间】:2014-05-27 18:52:26
【问题描述】:
我在尝试跟踪过期的 WIF 身份验证会话/cookie 时遇到了一个有趣的问题。
作为背景知识:该站点是 MVC 3,使用与 ADFS 服务器作为 STS 的信任的 Windows Identity Foundation (WIF)。整个站点受 SSL 保护。 STS 将令牌到期时间设置为 60 分钟。
当用户手动退出时,我们只需调用 FedAuth 模块上的 SignOut 方法:
FederatedAuthentication.WSFederationAuthenticationModule.SignOut(false);
这当然会删除 FedAuth cookie,但问题就从这里开始了。如果我使用 Fiddler 捕获这些 cookie,我可以在它们的到期时间内将它们重新呈现给站点,并且仍然被视为已登录。
我意识到这是从已接受 fiddler 作为代理的浏览器的特权位置执行的……但客户担心这些身份验证 cookie 实际上没有过期会带来重大的安全风险。他们不相信 SSL 可以充分保护网站,并且如果攻击者可以执行 MITM 攻击,他们可以在用户认为他们已经注销后使用这些 cookie。
我已经解释过,如果他们在注销后易受攻击,他们在登录期间也易受攻击,但他们不在乎......
所以我一直在寻找方法来确保一旦用户注销,与该登录会话关联的 fedauth cookie 将被视为过期。 WIF 处理程序似乎没有用于跟踪过期令牌的内置机制,我还没有找到与此相关的任何其他内容。
我猜这实际上是一个更广泛的问题 -> 一般如何检测过期的 cookie?有效的 cookie 就是有效的 cookie!
显而易见的解决方案是在注销后以某种方式跟踪这些 cookie,但我想尽可能避免自定义代码路由;作为一个菜鸟,很多安全文献都说要避免对任何类型的会话机制进行自定义编码,因为你可能会弄错!
是否有人知道 ASP.NET 中针对此问题的任何标准解决方案?
提前致谢。
【问题讨论】:
标签: asp.net asp.net-mvc wif