新系统要接公司的账号体系,开发拿着需求来问:对接 LDAP 还是 AD?这两个词经常被混着说,实际上一个是协议,一个是微软的产品,选错了后期改起来很麻烦。

LDAP 是协议,AD 是产品

LDAP 全称轻量目录访问协议,标准端口 389,加密的 LDAPS 走 636。它定义的是怎么查、怎么改一棵目录树,OpenLDAP、389 Directory Server、AD 都实现了它。AD 是 Windows Server 的域服务,除了 LDAP,还带 Kerberos 认证、DNS 集成、组策略和域信任,是一整套东西。

认证方式的差别

LDAP 常见的是简单绑定:拿一个 DN 加密码去 bind,成功就说明密码对。AD 除了 LDAP 绑定,还支持 Kerberos 票据和 NTLM,域内机器登录默认走 Kerberos,单点登录的体验就来自这里。想对接 AD 做 SSO,得走 Kerberos 或 ADFS、OIDC 这类上层协议,光 bind 一下只是校验了密码。

账号字段的坑

  • DN 写法:OpenLDAP 常是 uid=zhangsan,ou=staff,dc=corp,dc=com;AD 是 CN=张三,OU=总部,DC=corp,DC=com。
  • 登录名:AD 用 sAMAccountName 或 userPrincipalName,很多系统默认只认 uid,会登不上。
  • 加密:AD 默认要求签名或 LDAPS,明文 389 绑定经常被拒,报 8 号错误。

怎么选

公司已经在用域控、员工电脑加域、要统一改密和组策略,直接对接 AD。跨平台、Linux 为主、只需要一个账号库,OpenLDAP 更轻。人数不到五十、只有一两个系统要登录,别折腾目录服务,接企业微信或钉钉扫码更省事。

调试先做的一步

用 ldapsearch 或 AD 自带的 ldp.exe 先手工 bind 一次,把 base DN、过滤条件和属性名跑通,再写代码。很多问题出在 base DN 写错或者账号被锁,跟代码没关系。上线前还要确认账号锁定策略,密码连错五次可能锁半小时。