【发布时间】:2012-03-20 11:11:32
【问题描述】:
我们有一个使用 Windows 身份验证的非常基本的 SOAP Web 服务设置,对所有用户开放:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
问题
但是,一些 Windows 帐户出现401 Forbidden 错误。
什么有效
- 选择的帐户列表始终有效(无论 NTLM/Kerberos、本地/外部服务器如何)
- 在网络服务器上本地访问时,所有帐户似乎都可以正常工作
- 使用 IE(似乎使用 Kerberos)时,所有帐户似乎都可以工作
什么不起作用
- 来自外部服务器(似乎使用 NTLM)的大多数(但不是全部)帐户
其他事实
- 没有明显的模式,哪些帐户有效,哪些无效(这似乎是任意的)。
- 与现有工作帐户相同的新帐户不起作用。
- 哪些帐户工作似乎是一致的(即它要么总是工作,要么永远工作)
- 在不同环境中工作的帐户似乎是一致的(即所有 IIS 服务器接受和拒绝同一组帐户)。
- 除了不同的 NTLM 令牌和 401 而不是 200/202 响应之外,服务器之间捕获的流量没有差异。
技术上会发生什么
具体来说,当出现问题时,就好像无法验证密码凭据(我可以保证它们是正确的),根据安全日志中的 4625 Audit Failure 错误:
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: FAILING_ACCOUNT_NAME_ALLCAPS
Account Domain: MYDOMAIN
Failure Information:
Failure Reason: Unknown user name or bad password.
Status: 0xc000006d
Sub Status: 0xc000006a
这似乎导致帐户在 AD 中被锁定(这是有道理的,因为 0x000006a 代码通常反映了无效的密码尝试),尽管这种行为似乎不一致。
由于请求跟踪失败,IIS 显示未知用户名/错误密码错误,以及带有错误代码 3221225581 的 401.2 错误。
我还可以强制工作帐户出现“真正的”401 错误(通过在authorization 标签中拒绝它们)并且行为不同(即它不会将这些标记为Unknown user name or bad password,但会给出不同的访问被拒绝错误)。
下一步
你告诉我 - 有没有人知道我应该在哪里寻找帮助诊断这个问题的经验?
【问题讨论】:
-
您需要提供您的域环境。我假设至少有两个 AD 域。您需要提供域信任关系。是单向信任还是双向信任?是外部信任还是森林信任?我建议您查看网络跟踪以了解实际情况。有太多的似乎是。附上网络捕获也可以帮助其他人找出问题的原因。
-
单个 AD 域。不同令牌的数据包捕获是相同的例外。微软支持目前正在与我们合作,通过大量的数据包捕获来解决,到目前为止没有任何解释。
-
你有没有想过这个问题?我在安全日志中看到具有相同状态和子状态的相同条目。
-
不。我们确实发现对于一个特定帐户,它与密码有关。我们可以设置一个更简单的密码,它会工作,然后设置回一个更复杂的,它不会。为另一个用户设置同样的更复杂的密码会导致问题。然而,这对所有用户来说并不可靠(其中许多用户的密码很简单)。我们已经让 Microsoft 审查了我们的日志,但他们也无法确定可靠的原因(几个月的调查)。有趣且可能不相关的是,在 Windows 更新期间,我们甚至在针对本地服务器进行身份验证时也发现了类似的问题。
标签: active-directory iis-7.5 ntlm