某些用户的 IIS 8.5 Windows 身份验证失败

Cli*_*rce 5 authentication windows-authentication windows-server-2012 iis-8.5

我在 Windows 2012、IIS 8.5 下安装了一个需要 Windows 身份验证的应用程序。当某些用户使用该应用程序时,他们会在质询/响应后收到 401 错误。其他人可以毫无问题地使用该网站。用户都碰巧在同一个 AD 组中,但这可能是巧合。

这是处理的请求和响应(该网站是我们内部的,http://lcf - 这是 A 记录,而不是 CNAME):

要求: 在此处输入图片说明

回复: 在此处输入图片说明

在安全日志中,这是典型的显示内容:

An account failed to log on.

Subject:
    Security ID:        NULL SID
    Account Name:       -
    Account Domain:     -
    Logon ID:       0x0

Logon Type:         3

Account For Which Logon Failed:
    Security ID:        NULL SID
    Account Name:       test1
    Account Domain:     CORP

Failure Information:
    Failure Reason:     Account locked out.
    Status:         0xC0000234
    Sub Status:     0x0

Process Information:
    Caller Process ID:  0x0
    Caller Process Name:    -

Network Information:
    Workstation Name:   1N14SW1-PC
    Source Network Address: -
    Source Port:        -

Detailed Authentication Information:
    Logon Process:      NtLmSsp 
    Authentication Package: NTLM
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0
Run Code Online (Sandbox Code Playgroud)

由于登录失败等原因,给定的帐户(“test1”)并未从 Active Directory 中锁定。我认为此处的锁定必须来自 IIS。

在 IIS 日志中,这是一个相关条目:

2015-04-06 13:41:27 10.0.150.6 GET /Loss - 80 CORP\test1 10.0.20.28 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/6.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+EIE10;ENUSWOL) - 401 0 0 15
Run Code Online (Sandbox Code Playgroud)

对于网站:

  • 仅启用 Windows 身份验证,所有其他身份验证均已禁用。
  • Windows 身份验证、扩展保护已关闭且内核模式身份验证已启用。
  • 提供程序是 Negotiate 和 NTLM。(上面的标题证明了这一点。)
  • 授权规则设置为允许所有用户

我也尝试过多种浏览器。事实上,在同一台机器上切换用户会产生不同的结果。(机器 A 上的用户 A 可以,机器 A 上的用户 B 不行。)这些机器在同一个 Intranet 上。

编辑:我添加了一个顶级“test.html”文件以保持简单。我打开了故障记录,这是我的结果。有人能读懂这些符文吗?

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

编辑

  • Lockoutstatus.exe 在该域的所有 12 个 DC 上显示“未锁定”。

  • 成功登录:

    An account was successfully logged on.
    
    Subject:
        Security ID:        NULL SID
        Account Name:       -
        Account Domain:     -
        Logon ID:       0x0
    
    Logon Type:         3
    
    Impersonation Level:        Impersonation
    
    New Logon:
        Security ID:        CORP\xxxx1
        Account Name:       xxxx1
        Account Domain:     CORP
        Logon ID:       0x12E1355
        Logon GUID:     {00000000-0000-0000-0000-000000000000}
    
    Process Information:
        Process ID:     0x0
        Process Name:       -
    
    Network Information:
        Workstation Name:   1N14SW1-PC
        Source Network Address: -
        Source Port:        -
    
    Detailed Authentication Information:
        Logon Process:      NtLmSsp 
        Authentication Package: NTLM
        Transited Services: -
        Package Name (NTLM only):   NTLM V2
        Key Length:     0
    
    Run Code Online (Sandbox Code Playgroud)

我有点在我的谷歌福和绳索的尽头。有什么建议?

小智 4

被锁定的用户都在同一个 AD 组中这一事实可能并非巧合。这些用户可能没有访问应用程序文件夹的 NTFS 权限。为了避免这个问题,我做了以下操作,这应该确保应用程序池身份帐户用于所有文件访问,并且永远不会有任何冒充有趣的事情。

打开 IIS 管理器。在“站点”下选择应用程序。双击“配置编辑器”图标。在“部分”下拉列表中,找到system.webServer/serverRuntime. 将其设置为UseWorkerProcessUser.

使用 appcmd.exe 或 .config 文件可以完成同样的事情。

有点令人惊讶的是,这不是默认行为。显然,当使用 Windows 身份验证和默认设置 ( UseAuthenticatedUser) 时,某些文件访问是使用浏览站点的用户的权限执行的,而某些文件访问是使用应用程序池身份的权限执行的。就我个人而言,我总是只想使用应用程序池身份的权限,因此我必须记住调整上述设置。