summaryrefslogtreecommitdiff
path: root/java/broker-core/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-07-18 14:55:51 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-07-18 14:55:51 +0000
commitc9aea418210b18f6dc306bbe9ffd8f1d51644d50 (patch)
tree644a15e5a4667ae2159175f52c0b354a0c206f24 /java/broker-core/src
parent94cb657202acbbe5e45f1377ad40f29a1c6858ae (diff)
downloadqpid-python-c9aea418210b18f6dc306bbe9ffd8f1d51644d50.tar.gz
QPID-5768 : [Java Broker] Add ability to bind without searching for LDAP authentication manager
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1611668 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-core/src')
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java3
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java54
2 files changed, 38 insertions, 19 deletions
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
index dde1e690ac..ec735ad4e8 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
@@ -43,6 +43,9 @@ public interface SimpleLDAPAuthenticationManager<X extends SimpleLDAPAuthenticat
@ManagedAttribute( description = "Search filter")
String getSearchFilter();
+ @ManagedAttribute( description = "Bind without search")
+ boolean isBindWithoutSearch();
+
@ManagedAttribute( description = "LDAP context factory")
String getLdapContextFactory();
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
index f6f32c3bce..a0b2032dac 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
@@ -90,6 +90,9 @@ public class SimpleLDAPAuthenticationManagerImpl extends AbstractAuthenticationM
@ManagedAttributeField
private TrustStore _trustStore;
+ @ManagedAttributeField
+ private boolean _bindWithoutSearch;
+
/**
* Dynamically created SSL Socket Factory implementation used in the case where user has specified a trust store.
*/
@@ -411,35 +414,48 @@ public class SimpleLDAPAuthenticationManagerImpl extends AbstractAuthenticationM
private String getNameFromId(String id) throws NamingException
{
- Hashtable<String,Object> env = createInitialDirContextEnvironment(_providerUrl);
-
- env.put(Context.SECURITY_AUTHENTICATION, "none");
- InitialDirContext ctx = createInitialDirContext(env);
-
- try
+ if(!isBindWithoutSearch())
{
- SearchControls searchControls = new SearchControls();
- searchControls.setReturningAttributes(new String[] {});
- searchControls.setCountLimit(1l);
- searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- NamingEnumeration<?> namingEnum = null;
- String name = null;
+ Hashtable<String, Object> env = createInitialDirContextEnvironment(_providerUrl);
+
+ env.put(Context.SECURITY_AUTHENTICATION, "none");
+ InitialDirContext ctx = createInitialDirContext(env);
- namingEnum = ctx.search(_searchContext, _searchFilter, new String[] { id }, searchControls);
- if(namingEnum.hasMore())
+ try
+ {
+ SearchControls searchControls = new SearchControls();
+ searchControls.setReturningAttributes(new String[]{});
+ searchControls.setCountLimit(1l);
+ searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+ NamingEnumeration<?> namingEnum = null;
+ String name = null;
+
+ namingEnum = ctx.search(_searchContext, _searchFilter, new String[]{id}, searchControls);
+ if (namingEnum.hasMore())
+ {
+ SearchResult result = (SearchResult) namingEnum.next();
+ name = result.getNameInNamespace();
+ }
+ return name;
+ }
+ finally
{
- SearchResult result = (SearchResult) namingEnum.next();
- name = result.getNameInNamespace();
+ closeSafely(ctx);
}
- return name;
}
- finally
+ else
{
- closeSafely(ctx);
+ return id;
}
}
+ @Override
+ public boolean isBindWithoutSearch()
+ {
+ return _bindWithoutSearch;
+ }
+
private void closeSafely(InitialDirContext ctx)
{
try