【问题标题】:IIS 7.5 Prompting for credentials when using Windows Authentication after server rebootIIS 7.5 在服务器重新启动后使用 Windows 身份验证时提示输入凭据
【发布时间】:2020-08-04 12:07:34
【问题描述】:

Windows Server 2008 R2,IIS 7.5,在默认站点上实现 Windows 身份验证,在本地 Intranet 站点上实现数十个经典 ASP 和 asp.NET 应用程序。任何访问该站点的用户都已经是该域中经过身份验证的用户。服务器变量 AUTH_USER 将用于查询用户可以访问的应用程序的 SQL 表。

服务器级别设置(身份验证):

  • 扩展保护关闭
  • 启用内核模式身份验证 - 选中
  • 提供商 - NTLM 然后协商
  • 已禁用表单、匿名和模拟

网站设置(身份验证):

  • 同上

应用程序池

  • DefaultAppPool .NET Framework v2.0 集成网络服务标识
  • 经典 .NET AppPool .NET Framework v2.0 经典 ApplicationPoolIdentity 身份
  • ASP.NET v4.0 经典 .NET Framework v4.0 经典 ApplicationPoolIdentity 身份
  • ASP.NET v4.0 32Bit .NET Framework v4.0 集成 ApplicationPoolIdentity 身份
  • ASP.NET v4.0 .NET Framework v4.0 集成的ApplicationPoolIdentity 身份

期望的行为 - 用户打开网站,不提示输入用户名和密码,并自动进行身份验证并显示适合其 ID 的菜单。显示指向同一 IIS 实例上的其他应用程序的超链接。用户单击超链接并被带到应用程序,所有这些都不会被提示输入 Windows 用户名和密码。

会发生什么 - 当 IIS 服务器重新启动时,用户第一次访问该站点时,系统会提示他们输入 Windows 用户名和密码。如果输入信息(或单击取消按钮),菜单仍会显示。后续应用程序在重新启动后首次访问时也会提示输入用户名和密码,如果用户单击取消(或输入登录信息),他们将被带到该应用程序。不会再次提示用户访问相同站点的后续访问。但是,当服务器重新启动时,会如上所述提示用户。

在 W3SVC 日志文件中,第一个结果是 401.1 -2146893042,第二个结果是 401.2.5。

我确定肯定会有 IIS 配置设置、权限、缓存等或其他一些被忽略的调整。访问站点时(IE 11),AUTH_USER 正确,用户的应用程序列表也正确。

为什么提示输入用户名和密码,并且只有在网络服务器重新启动后才会这样做?还有,为什么在提示符下点击取消按钮也会显示菜单?

【问题讨论】:

  • -2146893042 只是意味着 IIS 服务器没有收到任何用户凭据。你能通过先将 NTLM 切换到 Kerberos 来解决它吗?
  • 另外,你对system.webServer/security/authentication/windowsAuthentication做了什么改动吗?
  • @JokiesDing - Kerberos 的切换 -> NTLM 似乎已经解决了这个问题。如果您将其发布为“答案”,我会选择它。感谢您帮助解决了我几天来一直遇到的问题!
  • 我很高兴该解决方案解决了您的问题。祝你有美好的一天。

标签: asp.net iis asp-classic iis-7.5 windows-authentication


【解决方案1】:

当我们遇到类似问题时。我们可以查看 status.sub-status 代码和 win32-status。错误消息 -2146893042 表明 IIS 服务器没有收到任何用户凭据。我以前遇到过这个问题。当 NTLM 的优先级高于 kerberos 时,可能会发生这种情况。

要解决此问题,请先设置协商提供者。

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 2021-04-30
    • 2010-12-05
    • 2012-09-06
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多