【问题标题】:Internet Explorer does not prompt for windows authentication after session timeout会话超时后 Internet Explorer 不提示 Windows 身份验证
【发布时间】:2011-07-20 15:02:49
【问题描述】:

我在使用 SSRS Report Manager Web 应用程序时遇到了问题(但我再次将其视为典型的 ASP.Net 应用程序问题)。

此应用程序配置为使用 Windows 身份验证,用户通常使用 Internet Explorer 访问该应用程序。该应用程序还设置了 20 分钟的会话超时。

问题(已被解释为信息安全问题 :( )是,如果用户在此应用程序上闲置超过 20 分钟,他仍然可以回来继续处理任何问题。他们说这是根本没有超时,因为他们没有收到登录提示。

当我运行 Fiddler 时,我观察到 20 分钟后的第一个请求实际上是 401,这意味着服务器已拒绝该请求。在那之后,我相信 Internet Explorer 会发送缓存的凭据。因此,不会出现登录提示。

我的问题是这些 1.会话超时后IE可以发送缓存凭据是真的吗?任何微软链接/参考? 2. 有什么方法可以在会话超时后强制登录对话框出现? (我从 IE 设置选项卡和高级选项卡中删除但没有运气)

【问题讨论】:

  • 用户在首次启动您的应用程序时是否会看到登录提示?如果您使用的是 Windows 身份验证,它们不应该...
  • 他们在启动应用程序时确实看到了这一点。
  • 这很奇怪。他们是否使用与登录您的应用程序相同的用户 ID 登录 Windows?您是否已将 Internet Explorer 配置为防止自动提供凭据?
  • 是的,他们确实使用相同的用户 ID 登录 Windows 和登录应用程序。是的,在 Internet Explorer 设置上,我在两个地方更改了设置 1. Internet Options -> Security -> Cusom Level -> Prompt for Username and password 。 2. Internet选项 -> 高级 -> 安全 -> 取消选中 windows 身份验证

标签: asp.net internet-explorer ssrs-2008 windows-authentication


【解决方案1】:

他们是一个非常 good blog-post 讨论几个不同的选项,但最好的方法是让您的应用程序检测会话超时并发送 401 响应代码。

另一种(更好的)方法是不使用 Windows 身份验证,并实现您自己的登录界面。这在 ASP.NET 中非常简单。

如果您无法控制您的应用程序,而且听起来好像您没有,那么您无能为力。

但是,这并不能解释您通过强制用户手动登录并在他们的会话到期时重新登录来达到的目的。唯一能从强制用户手动登录您的网站中获得任何好处的情况是,如果您希望他们让他们的计算机保持解锁状态 - 但无论如何您已经有一个巨大的安全漏洞。这就像在你的车里拧上窗户,然后让车门没有上锁,把钥匙放在车顶上。

【讨论】:

  • 我完全理解你所说的,在某种程度上我同意。然而,这个应用程序是 SSRS 应用程序,它是由微软自己开发的,所以我对它内部没有太多的控制,除了几个配置步骤。我需要它的原因是它正在被查看和安全策略异常(我无法控制),我需要以某种方式强制用户登录。您是否有任何来自 Microsoft 的参考/链接表明它会始终像这样工作(我的意思是 IE 将始终自行发送凭据并抑制提示)。
  • 这里要注意的另一件事是,正如我提到的,应用程序确实发送了 401 代码(提琴手告诉我)但是它没有提示对话框,而是带有默认凭据。
  • 正在发送 401,因为 IE 将总是尝试首先匿名登录。这在 IIS 层被拒绝。如果您的应用程序也发送 401,那么 IE 将打开登录提示。
  • 而且,恕我直言,你得到的是一个愚蠢的信息安全要求。这是荒谬的。我怀疑他们不了解 Windows 身份验证是什么,最好的办法是尝试教育他们。
  • 最后,如果有什么帮助,请阅读support.microsoft.com/?id=264921。它讨论了 IE 如何重新发送凭据。不幸的是,它说的是每个会话,但我认为这意味着 IE 会话,而不是 IIS 会话。
猜你喜欢
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2010-12-02
相关资源
最近更新 更多