You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/06/11 07:37:00 UTC
[james-project] 04/18: JAMES-3594 Implement ReadOnlyLDAPUsersDAO
with UnboundID library
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2712b332588a0d2b755fac28936b2b19916a0f92
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jun 9 08:14:51 2021 +0700
JAMES-3594 Implement ReadOnlyLDAPUsersDAO with UnboundID library
---
.../apache/james/user/ldap/ReadOnlyLDAPUser.java | 4 +--
.../james/user/ldap/ReadOnlyLDAPUsersDAO.java | 35 ++++++++--------------
2 files changed, 14 insertions(+), 25 deletions(-)
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
index b185e9f..09ecc6c 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import com.unboundid.ldap.sdk.BindResult;
import com.unboundid.ldap.sdk.LDAPConnectionPool;
import com.unboundid.ldap.sdk.LDAPException;
+import com.unboundid.ldap.sdk.ResultCode;
import reactor.core.publisher.Mono;
@@ -145,7 +146,6 @@ public class ReadOnlyLDAPUser implements User, Serializable {
private boolean doVerifyPassword(String password) throws LDAPException {
BindResult bindResult = connectionPool.bindAndRevertAuthentication(userDN, password);
- return bindResult.getResultCode()
- .intValue() == 0;
+ return bindResult.getResultCode() == ResultCode.SUCCESS;
}
}
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
index 0dc4ecd..d400aed 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
@@ -113,7 +113,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
SocketFactory socketFactory = null;
LDAPConnection ldapConnection = new LDAPConnection(socketFactory, connectionOptions, uri.getHost(), uri.getPort(), ldapConfiguration.getPrincipal(), ldapConfiguration.getCredentials());
ldapConnectionPool = new LDAPConnectionPool(ldapConnection, 4);
- // TODO implement retries
}
@PreDestroy
@@ -155,19 +154,14 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
}
private Set<String> getAllUsersFromLDAP() throws LDAPException {
- LDAPConnection connection = ldapConnectionPool.getConnection();
- try {
- SearchResult searchResult = connection.search(ldapConfiguration.getUserBase(),
- SearchScope.SUB,
- filterTemplate);
+ SearchResult searchResult = ldapConnectionPool.search(ldapConfiguration.getUserBase(),
+ SearchScope.SUB,
+ filterTemplate);
- return searchResult.getSearchEntries()
- .stream()
- .map(entry -> entry.getObjectClassAttribute().getName())
- .collect(Guavate.toImmutableSet());
- } finally {
- ldapConnectionPool.releaseConnection(connection);
- }
+ return searchResult.getSearchEntries()
+ .stream()
+ .map(entry -> entry.getObjectClassAttribute().getName())
+ .collect(Guavate.toImmutableSet());
}
/**
@@ -229,16 +223,11 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
}
private Optional<ReadOnlyLDAPUser> buildUser(String userDN) throws LDAPException {
- LDAPConnection connection = ldapConnectionPool.getConnection();
- try {
- SearchResultEntry userAttributes = connection.getEntry(userDN);
- Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute()));
- return userName
- .map(Username::of)
- .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration));
- } finally {
- ldapConnectionPool.releaseConnection(connection);
- }
+ SearchResultEntry userAttributes = ldapConnectionPool.getEntry(userDN);
+ Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute()));
+ return userName
+ .map(Username::of)
+ .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration));
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org