LDAP 典型流程
搜索:bind → search → 结果
用 ldapsearch 演示同一过程:
ldapsearch -H ldaps://ldap.example.com \
-D "cn=svc-reader,ou=apps,dc=example,dc=com" -w '****' \
-b "ou=people,dc=example,dc=com" -s sub \
"(&(objectClass=person)(mail=alice@example.com))" cn mail
用户认证:两种做法
1)直接 bind(simple bind)
应用直接用用户的 DN + 用户输入的密码去 bind,成功即认证通过:
- 若已知用户 DN 模板(如
uid=<输入>,ou=people,dc=example,dc=com),直接拼出 DN; bind(userDN, password);- 成功 = 密码正确;失败(
invalidCredentials)= 拒绝登录。
简单,但要求应用能从用户名推出 DN。
2)search + bind(最常用)
用户名不一定等于 RDN(可能用 mail 或 sAMAccountName 登录),于是:
- 应用先用一个服务账号 bind(只读权限);
- 按登录名 search 出用户条目,拿到其真实 DN,例如
(|(uid=<输入>)(mail=<输入>)); - 用查到的 DN + 用户密码再做一次 bind 验证密码;
- (可选)再 search / 读
memberOf判断组成员做授权。
与联邦登录的衔接
企业里 LDAP/AD 常作为 IdP 的后端目录: