Author: rgodfrey
Date: Fri Jul 18 14:55:51 2014
New Revision: 1611668

URL: http://svn.apache.org/r1611668
Log:
QPID-5768 : [Java Broker] Add ability to bind without searching for LDAP 
authentication manager

Modified:
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java?rev=1611668&r1=1611667&r2=1611668&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
 Fri Jul 18 14:55:51 2014
@@ -43,6 +43,9 @@ public interface SimpleLDAPAuthenticatio
     @ManagedAttribute( description = "Search filter")
     String getSearchFilter();
 
+    @ManagedAttribute( description = "Bind without search")
+    boolean isBindWithoutSearch();
+
     @ManagedAttribute( description = "LDAP context factory")
     String getLdapContextFactory();
 

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java?rev=1611668&r1=1611667&r2=1611668&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerImpl.java
 Fri Jul 18 14:55:51 2014
@@ -90,6 +90,9 @@ public class SimpleLDAPAuthenticationMan
     @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 SimpleLDAPAuthenticationMan
 
     private String getNameFromId(String id) throws NamingException
     {
-        Hashtable<String,Object> env = 
createInitialDirContextEnvironment(_providerUrl);
+        if(!isBindWithoutSearch())
+        {
+            Hashtable<String, Object> env = 
createInitialDirContextEnvironment(_providerUrl);
 
-        env.put(Context.SECURITY_AUTHENTICATION, "none");
-        InitialDirContext ctx = createInitialDirContext(env);
+            env.put(Context.SECURITY_AUTHENTICATION, "none");
+            InitialDirContext ctx = createInitialDirContext(env);
 
-        try
-        {
-            SearchControls searchControls = new SearchControls();
-            searchControls.setReturningAttributes(new String[] {});
-            searchControls.setCountLimit(1l);
-            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-            NamingEnumeration<?> namingEnum = null;
-            String name = null;
+            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())
+                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



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to