在不知道用户所在 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 的正常用法是绑定为具有搜索权限的已知用户,根据某些唯一属性(例如电子邮件地址)搜索用户,然后绑定为该用户。
我有一个 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 的正常用法是绑定为具有搜索权限的已知用户,根据某些唯一属性(例如电子邮件地址)搜索用户,然后绑定为该用户。