智能卡身份验证在 IIS 7.5 上停止工作 - 每个人都得到 401

Smartcard Authentication stopped working on IIS 7.5 - everybody gets 401

我们星期五离开时一切都很好。周末过后,所有用户在尝试对网站进行身份验证时都会收到 401。我们的 Web 服务器是 Windows Server 2008 R2 中的 IIS 7.5。该站点的 SSL 设置是需要 SSL 和需要客户端证书。 Web 服务器级别的身份验证选项设置为禁用,但启用的 Active Directory 客户端证书身份验证除外。在站点级别,身份验证选项都设置为 "Disabled." 身份验证规则有一个条目,允许指定的用户组 webUser。

使用配置编辑器,我使用他们的 CN 和智能卡 DoD CAC 的颁发者为每个用户设置了 manyToOneCertificateMappings。它们映射到属于 webUser 组的本地用户。

当用户访问该站点时,他们会收到“401 - 未经授权:由于凭据无效,访问被拒绝。” "You do not have permission to view this directory or page using the credentials that you supplied."

在事件日志中,我发现了错误,但它们早在我们遇到麻烦之前就已经存在了。这让我很困惑,因为 NetLogon 服务是 运行。 故障信息: 失败原因:NetLogon 组件未激活。 状态:0xc0000192 子状态:0x80090325

我尝试将本地用户帐户的权限提升为管理员,但没有任何变化。我确认证书已使用 OCSD 检查并使用良好和已撤销的证书进行了测试。所有证书仍然有效。

虽然每个人都在周末推送了工作站更新,但没有人更改服务器。我想根本原因是过期了。

如何判断是与本地用户帐户匹配的证书有问题还是本地用户帐户有问题?

这不是 IIS 或证书的错误。我通过编辑计算机配置的组策略来修复它。在本地策略下,我向经过身份验证的用户内置安全主体添加了 "Allow log on locally" 权限。

因此身份验证具有三个基本层。客户端浏览器向 IIS 发送证书。 IIS 在 manyToOneCertificateMappings 中查找与证书字段的匹配项。使用 manyToOneCertificateMappings table 中的本地用户凭据,IIS 使用户登录。最后一步失败,因为不允许用户在本地登录。

我没有意识到 "Allow log on locally" 权限适用于网络连接。我以为这只是为了登录到控制台。现在,我需要找到使组策略发生变化的某某...