java - 在不知道用户位于哪个 OU 的情况下绑定(bind)到 LDAP

标签 java ldap unboundid-ldap-sdk

我有一个结构相同的 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/

相关文章:

ldap - Keycloak - 将用户与 LDAP 同步的问题

ssl - 如何使用 unboundid ldap 监听器在端口 636 上监听 ldap 客户端请求

java - Java 小程序的焦点

java - 如何从电脑发送拨号字符串到 Asterisk 来调用电话?

mysql - Openldap backsql 将用户添加到带有 groupofNames 的组

java - Unboundid 不返回请求的 LDAP 属性。为什么?

java - UnboundID SASL无法获取密码

java - 将列表映射到 Map Java 8 stream 和 groupingBy

java - 将多个 PreparedStatements 合并在一起

perl Net::LDAP::LDIF 从变量字符串中读取 ldif