我有一个结构相同的 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");
通过指定完整绑定(bind) DN,在 LDAP 服务器上工作。
但是,我的问题是我可能不一定知道 ou=users,并且以下绑定(bind)因无效凭据而失败:
LDAPConnection connection = LDAPConnection(ip, port);
connection.bind("uid=username,dc=example,dc=com", "password");
这是因为在 LDAP 中,可能在不同的 OU 中拥有两个“用户名”用户,因此必须指定它以避免歧义?我想到的一种解决方法是在所有 OU 中搜索 uid=username 以找到正确的 OU。
这是一个不知道 OU 的常见问题吗?我的想法正确吗?
谢谢
最佳答案
LDAP 的正常用法是您绑定(bind)为具有搜索权限的已知用户,根据某些唯一属性(例如电子邮件地址)搜索用户,然后绑定(bind)为该用户。
关于java - 在不知道用户位于哪个 OU 的情况下绑定(bind)到 LDAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206509/