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

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

我安装了一个应用程序,需要在 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

给定的帐户(“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

对于网站:

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

我也试过多种浏览器。事实上,在同一台机器上切换用户会产生不同的结果。(机器 A 上的用户 A 没问题,机器 A 上的用户 B 则不行。)这些机器位于同一个内联网上。

编辑:我添加了一个顶层“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
    

我对 Google 的了解已经到极限了。有什么建议吗?

答案1

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

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

使用 appcmd.exe 或 .config 文件可以完成相同的操作。

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

相关内容