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/SimpleBindStrategy.java | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
index 4d77253..dc4dcd3 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
@@ -16,6 +16,7 @@
package org.forgerock.opendj.rest2ldap.authz;
import static org.forgerock.opendj.ldap.requests.Requests.newSimpleBindRequest;
+import static org.forgerock.opendj.rest2ldap.authz.Utils.close;
import static org.forgerock.services.context.SecurityContext.AUTHZID_DN;
import static org.forgerock.services.context.SecurityContext.AUTHZID_ID;
import static org.forgerock.util.Reject.checkNotNull;
@@ -37,7 +38,7 @@
import org.forgerock.util.promise.Promise;
/** Bind using a computed DN from a template and the current request/context. */
-public final class SimpleBindStrategy implements AuthenticationStrategy {
+final class SimpleBindStrategy implements AuthenticationStrategy {
private final ConnectionFactory connectionFactory;
private final Schema schema;
@@ -64,11 +65,13 @@
@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> connectionHolder = new AtomicReference<>();
return connectionFactory
.getConnectionAsync()
- .thenAsync(doSimpleBind(authenticatedConnectionHolder, parentContext, username,
- DN.format(bindDNTemplate, schema, username), password));
+ .thenAsync(doSimpleBind(connectionHolder, parentContext, username,
+ DN.format(bindDNTemplate, schema, username), password))
+ .thenFinally(close(connectionHolder));
}
static AsyncFunction<Connection, SecurityContext, LdapException> doSimpleBind(
--
Gitblit v1.10.0