LDAP 配置与同步
LDAP 按组织配置,同步过来的用户创建在该组织中。用全局管理员在组织页面编辑 LDAP 设置。

连接 LDAP 服务器

| 字段 | 描述 |
|---|---|
| LDAP服务器 | 这台服务器的显示名称(例如 Example LDAP Server)。 |
| 域名 | LDAP 服务器的主机名或 IP(例如 example.com)。 |
| 端口 | 端口号,只能是数字(例 如 389)。 |
| 基础 DN | 搜索用的基础 DN。 Casdoor 使用子树搜索,返回这个 DN 下的所有用户。管理员账号至少要对这个基础 DN 有读权限(例如 ou=Example,dc=example,dc=com)。 |
| 搜索过滤器 | 用户搜索的 LDAP 过滤器(例如 (objectClass=posixAccount))。如果过滤器中包含 {}(部分 LDAP 配置使用的占位符,例如 (uid={})),Casdoor 列出用户时会把它替换成 *,当作通配符。 |
| 过滤字段 | 用来识别用户的 LDAP 属性(例如 uid、mail、mobile)。 Casdoor 登录时输入的值会与这些属性匹配;通常用 uid 作为登录名。 |
| 管理员 | LDAP 管理员的绑定 DN 或 ID(取决于服务器,例如 cn=manager,dc=example,dc=com)。 |
| 管理员密码 | 管理员账号的密码。 |
| 自动同步 | 0 = 关闭。其他值 = 同步间隔(分钟)。 |
| 启用群组 | 开启后,Casdoor 会把 LDAP 群组和 OU 同步为 Casdoor 群组,并把用户分配进去。 |

同步用户
同步表列出配置的基础 DN 下的用户。已经同步过的用户复选框为禁用状态。勾选用户并同步,即可导入到组织中。
同步并不限于全局管理员:组织管理员也可以列出并同步本组织的 LDAP 用户。编辑上面的 LDAP 服务器设置仍然需要全局管理员。

群组与 OU 同步
开启 Enable groups 后,Casdoor 会在同步用户之前先查询 LDAP 目录中的群组对象。它会在基础 DN 下搜索具有以下任一对象类的条目:groupOfNames、groupOfUniqueNames、posixGroup,以及(Active Directory 的)group。每个匹配的条目都会创建为一个 Casdoor 群组。然后按用户的 memberOf 属性把用户分配到对应群组。
每轮自动同步中,群组同步都在用户同步之前运行,这样在计算用户归属时群组已经存在。如果某个群组查询失败,会记录错误,同步继续进行。
同步用户时,会把用户加入其 LDAP 群组,但不会移除用户已加入的、不由 LDAP 管理的群组,所以手动分配的群组会保留。
LDAP 服务器属性过滤
默认情况下,Casdoor 内置的 LDAP 服务器会为每个用户条目返回所有标准属性。可以在组织编辑页设置 LDAP attributes 来限制返回哪些属性。
列表非空时,搜索结果条目中只包含选中的属性。可选的属性有:
uid, cn, mail, email, mobile, displayName, givenName, sn, uidNumber, gidNumber, homeDirectory, loginShell, gecos, sshPublicKey, memberOf, title, userPassword, c, co
列表留空则返回所有属性(默认行为)。
默认群组
同步后分配给用户的一个或多个群组。可以选择多个默认群组,每个同步过来的用户都会加入所有这些群组。
如果某个 LDAP 用户的 uid 与组织中已有用户的 name 相同,Casdoor 会创建一个修改了 name 的新用户(uid + 随机后缀)。这个用户可能无法通过 LDAP 登录,因为 LDAP 服务器上没有这样的 uid。避免把已有的 Casdoor 用户名用作 LDAP uid。
手机号规范化
从 LDAP 同步用户时,Casdoor 会用 libphonenumber 规范化导入的手机号。如果 LDAP 条目带有国家代码(CountryCode 属性),会把它作为地区提示来解析号码。 "China" 这样的国家名会自动转换成两位 ISO 代码("CN");不是有效 ISO 代码的值会被忽略。
解析后,手机号只保存国内格式的数字(不带国家前缀和格式字符)。解析失败或无效的号码按原样保存。