在不知道用户所在 OU 的情况下绑定到 LDAP

Binding to LDAP without knowing which OU the user is in

我有一个 LDAP 服务器和一个结构相同的 AD 服务器:

dn=com ---> dn=example ---> ou=users ---> uid=用户名

LDAPConnection connection = LDAPConnection(ip, port);
connection.bind("username", "password");

在 AD 服务器上工作,无需指定完整的 DN。

LDAPConnection connection = LDAPConnection(ip, port);
connection.bind("uid=username,ou=users,dc=example,dc=com", "password");

通过指定完整的绑定 DN 在 LDAP 服务器上工作。

但是,我的问题是我可能不一定知道 ou=users,并且以下绑定因凭据无效而失败:

LDAPConnection connection = LDAPConnection(ip, port);
connection.bind("uid=username,dc=example,dc=com", "password");

这是因为在 LDAP 中可能有两个 "username" 用户在不同的 OU 中,因此必须指定它以避免歧义?我想到的一种解决方法是在所有 OU 中搜索 uid=username 以找到正确的 OU。

这是一个常见问题,OU 未知吗?我的思路正确吗?

谢谢

LDAP 的正常用法是绑定为具有搜索权限的已知用户,根据某些唯一属性(例如电子邮件地址)搜索用户,然后绑定为该用户。