Google Workspace多域组织结构下LDAP按UID过滤子域用户失败问题求助
嘿,我之前帮朋友排查过几乎一模一样的问题,给你捋几个关键的排查和解决方向,应该能帮到你:
先检查LDAP搜索的范围设置!这是最容易踩的坑:你当前的搜索大概率用的是
BASE(仅当前节点)或者ONELEVEL(仅直接子节点)范围,这种情况下只会搜索ou=Users,dc=example,dc=com这个节点下的直接用户,不会递归遍历子域对应的目录节点。你需要把搜索范围改成SUBTREE(子树搜索),这样LDAP客户端会遍历bind path指定节点以下的所有层级,包括example.it、example.es这些子域的用户节点。很多LDAP工具默认是ONELEVEL,一定要手动改成SUBTREE!别被bind path的误区绕进去:你以为
ou=Users,dc=example能覆盖所有子域,但Google Workspace的LDAP目录结构里,每个子域的用户其实是存放在独立的节点里的——比如example.it的用户在ou=Users,dc=example,dc=it,example.es的在ou=Users,dc=example,dc=es,这些节点并不是主域ou=Users,dc=example,dc=com的子节点,而是和主域节点平级的。所以如果不开启子树搜索,只搜主域的Users OU肯定找不到子域用户。确认子域用户的
uid属性是不是真的符合你的预期:有时候Google Workspace里,子域用户的uid可能不是单纯的user2,而是带域名后缀的user2@example.it?你可以用ldapsearch命令(或者Google Admin里的LDAP测试功能)做一次全量验证:ldapsearch -H ldap://ldap.google.com:389 -D "cn=你的绑定账号,ou=Users,dc=example,dc=com" -w 你的密码 -b "dc=example,dc=com" -s sub "(objectClass=inetOrgPerson)" uid mail这个命令会列出所有用户的
uid和mail属性,你可以对比一下你用的过滤条件(uid=user2)是不是和实际的uid值完全匹配。临时验证的小技巧:你可以把搜索的基准DN(
-b参数)设到目录根节点dc=example,dc=com,同时指定子树搜索,先确认用户条目确实存在于LDAP目录中,再缩小范围调整bind path和搜索条件。
备注:内容来源于stack exchange,提问作者tmpjg

