我已经开始使用 UnboundID 来实现针对 LDAP 的身份验证。我实现了如下身份验证:
连接到 LDAP
ldapConnection = new LDAPConnection(host, port, bindUserDN, bindUserPassword);
搜索用户 DN:
Filter.create("(sAMAccountName=" + userName + ")");
SearchRequest searchRequest =
new SearchRequest(baseDN, SearchScope.SUB,
DereferencePolicy.NEVER, 0, 0, false, filter,
attributesToReturn);
SearchResult searchResult = ldapConnection.search(searchRequest);`
绑定用户
SimpleBindRequest bindRequest = new SimpleBindRequest(searchResultEntry.getDN(), userPassword);
BindResult bindResult = ldapConnection.bind(bindRequest);
不幸的是,在使用用户 DN 和用户密码的最后一次绑定之后,ldapConnection
更改为用户 DN(而不是绑定的用户 DN)。我用ldapConnection.getLastBindRequest()
. 因此,我不能将它用于父条目检索(例如组检索),因为用户没有适当的权限。
是ldapConnection
改变用户的预期行为吗?用户认证后如何保留 LDAP 绑定用户连接?我应该在任何 LDAP 操作之前(或至少在身份验证之后)使用 bindUserDN 重新连接吗?