diff --git a/projects/cadcAccessControl-Server/build.xml b/projects/cadcAccessControl-Server/build.xml
index 6f8dc7a662b3fc95e0a9a4c1c401868a507ccf83..13d624b3a918da1962e4f02a8224d1e3bfc798ff 100644
--- a/projects/cadcAccessControl-Server/build.xml
+++ b/projects/cadcAccessControl-Server/build.xml
@@ -113,16 +113,19 @@
   </target>
 
   <!-- JAR files needed to run the test suite -->
-  <property name="json" value="${ext.lib}/json.jar"/>
-  <property name="easyMock" value="${ext.dev}/easymock.jar"/>
-  <property name="junit" value="${ext.dev}/junit.jar"/>
-  <property name="xmlunit" value="${ext.dev}/xmlunit.jar"/>
-  <property name="cglib" value="${ext.dev}/cglib.jar"/>
-  <property name="objenesis" value="${ext.dev}/objenesis.jar"/>
-  <property name="asm" value="${ext.dev}/asm.jar"/>
-
+  <property name="dev.junit" value="${ext.dev}/junit.jar"/>
+  <property name="dev.httpunit" value="${ext.dev}/httpunit.jar"/>
+  <property name="dev.easyMock" value="${ext.dev}/easymock.jar"/>
+  <property name="dev.objenesis" value="${ext.dev}/objenesis.jar"/>
+  <property name="dev.selenium.server"
+            value="${ext.dev}/selenium-server-standalone.jar" />
+  <property name="lib.js" value="${ext.lib}/js.jar"/>
+  <property name="lib.nekoHTML" value="${ext.lib}/nekohtml.jar"/>
+  <property name="lib.xerces" value="${ext.lib}/xerces.jar"/>
+  <property name="lib.commons-logging"
+            value="${ext.lib}/commons-logging.jar"/>
   <property name="testingJars"
-            value="${jars}:${json}:${easyMock}:${junit}:${xmlunit}:${cglib}:${asm}:${objenesis}"/>
+            value="${lib.commons-logging}:${dev.junit}:${dev.httpunit}:${dev.easyMock}:${dev.selenium.server}:${dev.objenesis}:${lib.js}:${lib.nekoHTML}:${lib.xerces}"/>
 
   <target name="setup-test">
     <echo>******************</echo>
diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java
index 0d508a603479161aa3d3021484b4166877935eee..956661a42e45a71aa4b55e4fc1f3f3bfa2d2ebf0 100755
--- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java
+++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java
@@ -268,7 +268,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
             AddRequest addRequest = new AddRequest(userDN, attributes);
             LDAPResult result = getConnection().add(addRequest);
             LdapDAO.checkLdapResult(result.getResultCode());
-            
+
             // AD: Search results sometimes come incomplete if
             // connection is not reset - not sure why.
             getConnection().reconnect();
@@ -307,6 +307,8 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
         return getUser(userID, config.getUsersDN());
     }
 
+
+
     /**
      * Get the user specified by userID.
      *
@@ -338,9 +340,12 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
                     new SearchRequest(usersDN, SearchScope.SUB,
                                      searchField, userAttribs);
 
-            searchRequest.addControl(
-                    new ProxiedAuthorizationV2RequestControl(
-                            "dn:" + getSubjectDN().toNormalizedString()));
+            if (isSecure(usersDN))
+            {
+                searchRequest.addControl(
+                        new ProxiedAuthorizationV2RequestControl(
+                                "dn:" + getSubjectDN().toNormalizedString()));
+            }
 
             searchResult = getConnection().searchForEntry(searchRequest);
         }
@@ -381,7 +386,18 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
         
         return user;
     }
-    
+
+    /**
+     * Obtain whether the given DN tree requires authentication.
+     *
+     * @param usersDN           The usersDN to check.
+     * @return              True if requires authentication, False otherwise.
+     */
+    private boolean isSecure(final String usersDN)
+    {
+        return !usersDN.equals(config.getUserRequestsDN());
+    }
+
     /**
      * Get all group names.
      * 
diff --git a/projects/cadcAccessControl-Server/test/LdapConfig.test.properties b/projects/cadcAccessControl-Server/test/LdapConfig.test.properties
index 0d3bc21ab631c1065379ffda2e5f38f005ed90b4..2354a157763992f801c862d5d1945663edd9b055 100644
--- a/projects/cadcAccessControl-Server/test/LdapConfig.test.properties
+++ b/projects/cadcAccessControl-Server/test/LdapConfig.test.properties
@@ -3,7 +3,7 @@ server = proc5-03.cadc.dao.nrc.ca
 port = 636
 proxyUser = webproxy
 usersDn = ou=Users,ou=ds,dc=canfar,dc=net
-userRequestsDN = ou=UserRequests,ou=ds,dc=canfar,dc=net
+userRequestsDN = ou=UserRequests,ou=ds,dc=testcanfar
 newUsersDn = ou=NewUsers,ou=ds,dc=canfar,dc=net
 groupsDn = ou=Groups,ou=ds,dc=canfar,dc=net
 adminGroupsDn = ou=adminGroups,ou=ds,dc=canfar,dc=net
\ No newline at end of file
diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java
index 596bee8035c2d95c3e90c39e9944bcdd1b595f4a..aa47a3091287bdbdb006f9876b389df026ce05d6 100644
--- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java
+++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java
@@ -134,29 +134,14 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
         expected.getIdentities().add(new HttpPrincipal(getUserID()));
         expected.details.add(new PersonalDetails("foo", "bar"));
 
-        final UserRequest userRequest = new UserRequest(expected, "123456");
+        final UserRequest<HttpPrincipal> userRequest =
+                new UserRequest<HttpPrincipal>(expected, "123456");
 
         Subject subject = new Subject();
         subject.getPrincipals().add(testUser.getUserID());
 
-        // do everything as owner
-        Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
-        {
-            public Object run() throws Exception
-            {
-                try
-                {
-                    User<? extends Principal> actual = getUserDAO().addUser(userRequest);
-                    check(expected, actual);
-                    
-                    return null;
-                }
-                catch (Exception e)
-                {
-                    throw new Exception("Problems", e);
-                }
-            }
-        });
+        User<HttpPrincipal> actual = getUserDAO().addUser(userRequest);
+        check(expected, actual);
     }
     
     /**
diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/AddGroupMemberActionTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/AddGroupMemberActionTest.java
index 56fa6154db4f7a2ed1629abfa28de4eef024e7ab..eb092c7f48d4e86880a3f9b2eafb2e840ecec592 100644
--- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/AddGroupMemberActionTest.java
+++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/AddGroupMemberActionTest.java
@@ -75,7 +75,8 @@ import ca.nrc.cadc.util.Log4jInit;
 import java.security.Principal;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.easymock.EasyMock;
+
+import static org.easymock.EasyMock.*;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import static org.junit.Assert.*;
@@ -103,12 +104,12 @@ public class AddGroupMemberActionTest
             Group member = new Group("member", null);
             group.getGroupMembers().add(member);
             
-            final GroupPersistence groupPersistence = EasyMock.createMock(GroupPersistence.class);
-            EasyMock.expect(groupPersistence.getGroup("group")).andReturn(group);
-            EasyMock.expect(groupPersistence.getGroup("member")).andReturn(member);
-            EasyMock.replay(groupPersistence);
+            final GroupPersistence groupPersistence = createMock(GroupPersistence.class);
+            expect(groupPersistence.getGroup("group")).andReturn(group);
+            expect(groupPersistence.getGroup("member")).andReturn(member);
+            replay(groupPersistence);
             
-            GroupLogInfo logInfo = EasyMock.createMock(GroupLogInfo.class);
+            GroupLogInfo logInfo = createMock(GroupLogInfo.class);
             
             AddGroupMemberAction action = new AddGroupMemberAction(logInfo, "group", "member")
             {
@@ -142,15 +143,17 @@ public class AddGroupMemberActionTest
             Group member = new Group("member", null);
             Group modified = new Group("group", null);
             modified.getGroupMembers().add(member);
+
+            final GroupPersistence groupPersistence =
+                    createMock(GroupPersistence.class);
+
+            expect(groupPersistence.getGroup("group")).andReturn(group);
+            expect(groupPersistence.getGroup("member")).andReturn(member);
+            expect(groupPersistence.modifyGroup(group)).andReturn(modified);
+
+            replay(groupPersistence);
             
-            
-            final GroupPersistence groupPersistence = EasyMock.createMock(GroupPersistence.class);
-            EasyMock.expect(groupPersistence.getGroup("group")).andReturn(group);
-            EasyMock.expect(groupPersistence.getGroup("member")).andReturn(member);
-            EasyMock.expect(groupPersistence.modifyGroup(group)).andReturn(modified);
-            EasyMock.replay(groupPersistence);
-            
-            GroupLogInfo logInfo = EasyMock.createMock(GroupLogInfo.class);
+            GroupLogInfo logInfo = createMock(GroupLogInfo.class);
             
             AddGroupMemberAction action = new AddGroupMemberAction(logInfo, "group", "member")
             {