3

有没有办法为使用经典 asp 并使用 Windows 身份验证的站点提供注销功能(即受限文件夹通过服务器操作系统设置其权限,并且用户名/密码存储在 Active Directory 中)?

如果有任何区别,则服务器正在运行 IIS 5.0。注销至少需要适用于 IE(6、7 和 8)和 Firefox。

请注意,这是一个古老且相当大的站点——有数百个单独的 asp 页面——因此任何涉及更改单个页面的解决方案都无法正常工作。(出于同样的原因,以及基本的礼貌,请不要建议更改为asp.net。)

到目前为止我所发现的表明发送 401 响应代码可能会导致某些浏览器清除身份验证,但是(1)我不知道该怎么做,并且(2)我真的更喜欢真正有效的东西,而不仅仅是有工作的机会。我也知道摆弄 Session 对象(例如.Abandon)是完全没有意义的,因为那不是完成身份验证的地方。

4

1 回答 1

2

您对“注销”一词的使用令人困惑。通常它的站点 reposibility 来管理登录/退出,这通常是使用 session 对象完成的,但这不是你在说的。

我认为您可能在谈论两件可能的事情。

连接认证

首先,由 Windows 集成安全性完成的类型身份验证是在连接级别执行的。一旦一个连接被认证,该连接(在 HTTP/1.1 下默认保持在打开状态)可以被使用,而不需要进一步的认证握手。

可以通过Connection: close在响应中包含标头来说服客户端或服务器关闭连接,但这实际上可能不会导致连接被关闭。

此外,客户端可能同时打开 2 个或更多经过身份验证的连接。在这种情况下,上述方法只会关闭其中一个。

这里的结论是,对于每个会话级别的经过身份验证的连接,您几乎无能为力。

凭证缓存

IE 将在 IE 会话期间缓存用户为网络登录到特定站点而输入的凭据。因此,即使您确实设法关闭了现有的经过身份验证的连接,IE 也会简单地重新使用缓存的凭据来静默完成任何后续的身份验证握手。可以将客户端配置为不这样做,但我怀疑这是您可以使用的东西。

结论

(至少我认为你在问的问题)的答案是:不,你不能。

于 2009-10-07T09:39:22.283 回答