From 5b7afcc00e450bf639610f27af7a1c3a3562a020 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Thu, 19 May 2016 15:10:45 +0000
Subject: [PATCH] Rest2Ldap: Removed connection reuse, simplify authorization filtering, use factory methods, add more unit tests.
---
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SearchThenBindStrategy.java | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SearchThenBindStrategy.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SearchThenBindStrategy.java
index c0f1d00..c2a1d76 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SearchThenBindStrategy.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SearchThenBindStrategy.java
@@ -35,7 +35,7 @@
import org.forgerock.util.promise.Promise;
/** Bind using the result of a search request computed from the current request/context. */
-public final class SearchThenBindStrategy implements AuthenticationStrategy {
+final class SearchThenBindStrategy implements AuthenticationStrategy {
private final ConnectionFactory searchConnectionFactory;
private final ConnectionFactory bindConnectionFactory;
@@ -70,7 +70,7 @@
@Override
public Promise<SecurityContext, LdapException> authenticate(final String username, final String password,
- final Context parentContext, final AtomicReference<Connection> authenticatedConnectionHolder) {
+ final Context parentContext) {
final AtomicReference<Connection> searchConnectionHolder = new AtomicReference<>();
return searchConnectionFactory
.getConnectionAsync()
@@ -90,11 +90,12 @@
@Override
public Promise<SecurityContext, LdapException> apply(final SearchResultEntry searchResult)
throws LdapException {
+ final AtomicReference<Connection> bindConnectionHolder = new AtomicReference<>();
return bindConnectionFactory
.getConnectionAsync()
- .thenAsync(
- doSimpleBind(authenticatedConnectionHolder, parentContext, username,
- searchResult.getName(), password));
+ .thenAsync(doSimpleBind(bindConnectionHolder, parentContext, username,
+ searchResult.getName(), password))
+ .thenFinally(close(bindConnectionHolder));
}
});
}
--
Gitblit v1.10.0