如何在 IIS 中关闭凭据缓存?

Posted

技术标签:

【中文标题】如何在 IIS 中关闭凭据缓存?【英文标题】:How do you turn off caching of credentials in IIS? 【发布时间】:2013-11-07 15:52:45 【问题描述】:

我最近在 MVC4 中构建了一个使用 CAC 身份验证的 Web 应用程序。一切正常,除了我的应用程序并不总是每次都进入登录操作结果。我意识到原因是因为 IIS 第一次缓存我的凭据,我不希望它这样做。如何防止 IIS 缓存我的登录凭据,但保留我的图像、css、javascript 缓存?

【问题讨论】:

从其他浏览器尝试 - 凭据消失了吗? IIS 不会缓存您的凭据 - 如果您使用的是 Forms 身份验证,则会保存一个 cookie,并且当您访问该页面时会找到您的会话。如果您这样做是为了在您关闭浏览器时删除 cookie,那就行了。 后续:这篇老文章(是的,例子在 VB 中)很好地解释了这个过程:asp.net/web-forms/tutorials/security/introduction/… 标记到@mattw - 当服务器重新启动或服务也被循环时,cookie被删除。 @TechieJoe 是和否。cookie 仍然存在(它存储在用户的机器上),但 cookie 所指的会话已消失/清除。这里有一个大问题:如果您将会话存储在数据库或 ASP.NET 以外的其他地方[如果您正在对应用程序进行负载平衡,则必须这样做],会话将继续存在。在这种情况下,回收 AppPool 不会清除会话。 @TechieJoe - 这是不正确的。 cookie 存储在客户端上。您可能指的是,如果 machineKey 设置为自动生成,则 IIS/服务器重新启动可能会导致生成新的 machineKey,从而使现有的身份验证 cookie 无效......或者 MattW 所说的 :) 【参考方案1】:

IIS 不应该缓存您的凭据,当您关闭并重新打开网站时,登录 cookie 还没有过期。我正在尝试查找有关通用访问卡身份验证的信息,但我假设它非常类似于表单身份验证。

当有人登录您的网站时,您的网站会发出一个加密的 cookie。此 cookie 随每个请求发送到您的站点,以授权用户执行您的操作。

在您的 web.config 中,有一个部分用于处理此 cookie 的有效期以及您的登录 url 等项目。

<authentication mode="Forms">
   <forms loginUrl="~/User/Account/Login" timeout="2880" />
</authentication>

超时属性是 cookie 保持有效的时间,以分钟为单位。因此,在同一个浏览器中,只要 cookie 没有过期,用户就不必再次登录。我相信默认超时是 20 分钟,并且有一个“滑动到期”,这意味着只要用户在您的网站上做事,cookie 的到期时间就会继续滑出,从而防止您的网站将活跃用户踢回正在使用您的应用程序的登录页面。

【讨论】:

你是对的。我只需要删除我的 cookie 的到期日期。

以上是关于如何在 IIS 中关闭凭据缓存?的主要内容,如果未能解决你的问题,请参考以下文章

漏洞扫描设备检测出服务存在漏洞:可通过HTTPS获取远端WWW服务版信息,如何解决?

在 MAMP 中关闭缓存

在Firefox中关闭缓存

如何在线程中关闭 QWebSocket?

如何在 Swift 中关闭 ViewController?

如何在 DidSelectRow 中关闭 UIPopover?