通过 X.509 客户端证书认证进行 Active Directory LDAP 绑定

通过 X.509 客户端证书认证进行 Active Directory LDAP 绑定

我想让用户使用 x.509 客户端证书进行身份验证,从而执行与 Active Directory 的 LDAP 绑定。我很难理解如何将各个部分组合在一起。

来自 MS 文章这里:

如果客户端通过连接受保护的 LDAPS 端口建立受 SSL/TLS 保护的连接,则该连接被视为立即通过客户端证书所代表的凭据进行身份验证(绑定)。

我的结论是,如果客户端尝试连接到端口 636 上启用 LDAPS 的服务器,他们可以选择在 TLS 握手过程中出示其客户端证书。如果他们这样做,从该客户端证书插入的身份就足以验证用户身份并完成连接(绑定)。这准确吗?

假设我的理解是正确的,但我仍然不明白以下内容:

Active Directory 使用什么机制将客户端证书“映射”到用户? CN 与域用户名匹配是否足够? 或者是否需要将客户端证书添加到目录中用户对象的某些属性中,例如Alt-Security-Identities 属性

什么决定了服务器将信任哪些 CA 作为客户端证书的颁发者?是否有可能为客户端证书建立一个与服务器信任链完全不同的 CA?这(有点过时了)文章状态:

客户端必须使用 LDAP 服务器信任的 CA 颁发的证书

但我不清楚这种信任是如何建立的。

答案1

这将使用与智能卡身份验证相同的属性映射机制。标准方法是将用户 UPN 放在 SAN 中,映射到 userPrincipalName 属性。可以使用其他属性,但这并不常见:https://docs.microsoft.com/en-us/windows/security/identity-protection/smart-cards/smart-card-certificate-requirements-and-enumeration

我不知道 LDAP 是否只接受来自 NTAUTH 存储中的 CA(智能卡需要)或任何受信任的 CA 的证书。不过很容易测试。

相关内容