diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-07-18 14:55:51 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-07-18 14:55:51 +0000 |
commit | c9aea418210b18f6dc306bbe9ffd8f1d51644d50 (patch) | |
tree | 644a15e5a4667ae2159175f52c0b354a0c206f24 /java/broker-core/src | |
parent | 94cb657202acbbe5e45f1377ad40f29a1c6858ae (diff) | |
download | qpid-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')
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 |