summaryrefslogtreecommitdiff
path: root/qpid/java
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
commit581176503d1ebfe9cb7380ffe41e1da269bb1de5 (patch)
tree79b0b0aef4c5176d19eea3e565350f40125b6194 /qpid/java
parentd1edef4b29bbdda8e1027b893367ab00d58bb2cd (diff)
downloadqpid-python-581176503d1ebfe9cb7380ffe41e1da269bb1de5.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@1611668 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java3
-rw-r--r--qpid/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/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
index dde1e690ac..ec735ad4e8 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
+++ b/qpid/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/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
index f6f32c3bce..a0b2032dac 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
+++ b/qpid/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