Commit 7abd64aa authored by Jeff Burke's avatar Jeff Burke
Browse files

ac2: allow a get from another dao method as an anon user

parent 925d6834
Loading
Loading
Loading
Loading
+29 −8
Original line number Diff line number Diff line
@@ -292,7 +292,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
        {
            getUser(userRequest.getUser().getUserID(), config.getUsersDN());
            final String error = userRequest.getUser().getUserID().getName() +
                " fount in " + config.getUsersDN();
                " found in " + config.getUsersDN();
            throw new UserAlreadyExistsException(error);
        }
        catch (UserNotFoundException e1) {}
@@ -313,18 +313,18 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
    {
        try
        {
            getUser(userRequest.getUser().getUserID(), config.getUsersDN());
            getUser(userRequest.getUser().getUserID(), config.getUsersDN(), false);
            final String error = userRequest.getUser().getUserID().getName() +
                                 " fount in " + config.getUsersDN();
                                 " found in " + config.getUsersDN();
            throw new UserAlreadyExistsException(error);
        }
        catch (UserNotFoundException e1)
        {
            try
            {
                getUser(userRequest.getUser().getUserID(), config.getUserRequestsDN());
                getUser(userRequest.getUser().getUserID(), config.getUserRequestsDN(), false);
                final String error = userRequest.getUser().getUserID().getName() +
                    " fount in " + config.getUserRequestsDN();
                    " found in " + config.getUserRequestsDN();
                throw new UserAlreadyExistsException(error);
            }
            catch (UserNotFoundException e2) {}
@@ -441,6 +441,24 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
        throws UserNotFoundException, TransientException,
        AccessControlException
    {

        return getUser(userID, usersDN, true);
    }
    /**
     * Get the user specified by userID.
     *
     * @param userID  The userID.
     * @param usersDN The LDAP tree to search.
     * @param proxy Whether to proxy the search as the calling Subject.
     * @return User instance.
     * @throws UserNotFoundException  when the user is not found.
     * @throws TransientException     If an temporary, unexpected problem occurred.
     * @throws AccessControlException If the operation is not permitted.
     */
    private User<T> getUser(final T userID, final String usersDN, final boolean proxy)
        throws UserNotFoundException, TransientException,
        AccessControlException
    {
        String searchField = userLdapAttrib.get(userID.getClass());
        if (searchField == null)
        {
@@ -457,9 +475,12 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
            SearchRequest searchRequest =
                    new SearchRequest(usersDN, SearchScope.SUB, filter, userAttribs);

            if (proxy)
            {
                String proxyDN = "dn:" + getSubjectDN().toNormalizedString();
                logger.debug("Proxying auth as: " + proxyDN);
                searchRequest.addControl(new ProxiedAuthorizationV2RequestControl(proxyDN));
            }

            searchResult = getConnection().searchForEntry(searchRequest);
        }
+6 −0
Original line number Diff line number Diff line
@@ -275,6 +275,8 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
        });
    }

    // TODO testAddUser for an existing user

    /**
     * Test of getUser method, of class LdapUserDAO.
     */
@@ -337,6 +339,8 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
        });
    }

    // TODO testGetUser for a user that doesn't exist

    @Test
    public void testApproveUser() throws Exception
    {
@@ -485,6 +489,8 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
        check(testUser2, updatedUser);
    }

    // TODO testUpdateUser for a user that doesn't exist

    /**
     * Test of deleteUser method, of class LdapUserDAO.
     */