Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java +20 −23 Original line number Diff line number Diff line Loading @@ -423,9 +423,10 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO SearchResultEntry searchResult = null; try { Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); filter = Filter.createANDFilter(filter, Filter.createEqualityFilter(searchField, userID.getName())); // Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); // filter = Filter.createANDFilter(filter, // Filter.createEqualityFilter(searchField, userID.getName())); Filter filter = Filter.createEqualityFilter(searchField, userID.getName()); logger.debug("search filter: " + filter); SearchRequest searchRequest = Loading Loading @@ -454,7 +455,8 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO searchResult.getAttributeValue( userLdapAttrib.get(HttpPrincipal.class)))); Long numericID = searchResult.getAttributeValueAsLong(userLdapAttrib.get(NumericPrincipal.class)); Long numericID = searchResult.getAttributeValueAsLong( userLdapAttrib.get(NumericPrincipal.class)); logger.debug("Numeric id is: " + numericID); if (numericID == null) { Loading Loading @@ -494,9 +496,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO try { Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); filter = Filter.createANDFilter(filter, Filter.createEqualityFilter(searchField, userID.getName())); Filter filter = Filter.createEqualityFilter(searchField, userID.getName()); logger.debug("search filter: " + filter); SearchRequest searchRequest = new SearchRequest( Loading Loading @@ -537,7 +537,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO * @throws TransientException If an temporary, unexpected problem occurred. */ public Collection<User<Principal>> getUsers() throws TransientException throws AccessControlException, TransientException { return getUsers(config.getUsersDN()); } Loading @@ -549,13 +549,13 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO * @throws TransientException If an temporary, unexpected problem occurred. */ public Collection<User<Principal>> getPendingUsers() throws TransientException throws AccessControlException, TransientException { return getUsers(config.getUserRequestsDN()); } private Collection<User<Principal>> getUsers(final String usersDN) throws TransientException throws AccessControlException, TransientException { final Collection<User<Principal>> users = new ArrayList<User<Principal>>(); Loading @@ -565,7 +565,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO logger.debug("search filter: " + filter); final String[] attributes = new String[] { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME, LDAP_NSACCOUNTLOCK }; { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME }; final SearchRequest searchRequest = new SearchRequest(usersDN, SearchScope.ONE, filter, attributes); Loading @@ -576,8 +576,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO LdapDAO.checkLdapResult(searchResult.getResultCode()); for (SearchResultEntry next : searchResult.getSearchEntries()) { if (!next.hasAttribute(LDAP_NSACCOUNTLOCK)) { final String firstName = next.getAttributeValue(LDAP_FIRST_NAME).trim(); Loading @@ -590,7 +588,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO users.add(user); } } } catch (LDAPSearchException e) { if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT) Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/UserServlet.java +2 −1 Original line number Diff line number Diff line Loading @@ -127,6 +127,8 @@ public class UserServlet extends HttpServlet { log.info(logInfo.start()); AbstractUserAction action = factory.createAction(request); action.setAcceptedContentType(getAcceptedContentType(request)); log.debug("content-type: " + getAcceptedContentType(request)); // Special case: if the calling subject has a servops X500Principal, // AND it is a GET request, do not augment the subject. Loading @@ -147,7 +149,6 @@ public class UserServlet extends HttpServlet SyncOutput syncOut = new SyncOutput(response); action.setLogInfo(logInfo); action.setSyncOut(syncOut); action.setAcceptedContentType(getAcceptedContentType(request)); try { Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/AbstractUserAction.java +0 −7 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ */ package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.ac.PersonalDetails; import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.UserAlreadyExistsException; Loading @@ -81,7 +80,6 @@ import ca.nrc.cadc.ac.json.JsonUserWriter; import ca.nrc.cadc.ac.server.PluginFactory; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.ac.server.web.SyncOutput; import ca.nrc.cadc.auth.AuthenticationUtil; import ca.nrc.cadc.ac.xml.UserListWriter; import ca.nrc.cadc.ac.xml.UserReader; import ca.nrc.cadc.ac.xml.UserRequestReader; Loading @@ -89,7 +87,6 @@ import ca.nrc.cadc.ac.xml.UserWriter; import ca.nrc.cadc.net.TransientException; import org.apache.log4j.Logger; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.Writer; Loading @@ -97,10 +94,6 @@ import java.security.AccessControlException; import java.security.Principal; import java.security.PrivilegedExceptionAction; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public abstract class AbstractUserAction implements PrivilegedExceptionAction<Object> { Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/ModifyUserAction.java +64 −3 Original line number Diff line number Diff line Loading @@ -71,11 +71,18 @@ package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.auth.AuthenticationUtil; import ca.nrc.cadc.auth.CookiePrincipal; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.IdentityType; import ca.nrc.cadc.auth.NumericPrincipal; import org.apache.log4j.Logger; import javax.security.auth.x500.X500Principal; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.security.Principal; import java.util.Iterator; import java.util.Set; Loading @@ -83,11 +90,13 @@ import java.util.Set; public class ModifyUserAction extends AbstractUserAction { private static final Logger log = Logger.getLogger(ModifyUserAction.class); private final InputStream inputStream; private final String request; private final HttpServletRequest request; ModifyUserAction(final InputStream inputStream, final String request) ModifyUserAction(final InputStream inputStream, final HttpServletRequest request) { super(); Loading @@ -102,7 +111,59 @@ public class ModifyUserAction extends AbstractUserAction final User<Principal> modifiedUser = modifyUser(user); logUserInfo(modifiedUser.getUserID().getName()); syncOut.setHeader("Location", request); final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append(request.getPathInfo()); sb.append("?idType="); // Need to find the principal type for this userID String idType = null; for (Principal principal : user.getIdentities()) { if (principal.getName().equals(modifiedUser.getUserID().getName())) { if (principal instanceof HttpPrincipal) { idType = IdentityType.USERNAME.getValue(); } else if (principal instanceof X500Principal) { idType = IdentityType.X500.getValue(); } else if (principal instanceof NumericPrincipal) { idType = IdentityType.CADC.getValue(); } else if (principal instanceof CookiePrincipal) { idType = IdentityType.COOKIE.getValue(); } } } if (idType == null) { throw new IllegalArgumentException( "Bad POST request to " + request.getServletPath() + " because unknown userID Principal"); } sb.append(idType); final String redirectUrl = sb.toString(); log.debug("redirect URL: " + redirectUrl); syncOut.setHeader("Location", redirectUrl); syncOut.setCode(303); } Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java +1 −17 Original line number Diff line number Diff line Loading @@ -169,23 +169,7 @@ public abstract class UserActionFactory if (segments.length == 1) { final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append(path); sb.append("?"); sb.append(request.getQueryString()); action = new ModifyUserAction(request.getInputStream(), sb.toString()); action = new ModifyUserAction(request.getInputStream(), request); } if (action != null) Loading Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java +20 −23 Original line number Diff line number Diff line Loading @@ -423,9 +423,10 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO SearchResultEntry searchResult = null; try { Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); filter = Filter.createANDFilter(filter, Filter.createEqualityFilter(searchField, userID.getName())); // Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); // filter = Filter.createANDFilter(filter, // Filter.createEqualityFilter(searchField, userID.getName())); Filter filter = Filter.createEqualityFilter(searchField, userID.getName()); logger.debug("search filter: " + filter); SearchRequest searchRequest = Loading Loading @@ -454,7 +455,8 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO searchResult.getAttributeValue( userLdapAttrib.get(HttpPrincipal.class)))); Long numericID = searchResult.getAttributeValueAsLong(userLdapAttrib.get(NumericPrincipal.class)); Long numericID = searchResult.getAttributeValueAsLong( userLdapAttrib.get(NumericPrincipal.class)); logger.debug("Numeric id is: " + numericID); if (numericID == null) { Loading Loading @@ -494,9 +496,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO try { Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK)); filter = Filter.createANDFilter(filter, Filter.createEqualityFilter(searchField, userID.getName())); Filter filter = Filter.createEqualityFilter(searchField, userID.getName()); logger.debug("search filter: " + filter); SearchRequest searchRequest = new SearchRequest( Loading Loading @@ -537,7 +537,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO * @throws TransientException If an temporary, unexpected problem occurred. */ public Collection<User<Principal>> getUsers() throws TransientException throws AccessControlException, TransientException { return getUsers(config.getUsersDN()); } Loading @@ -549,13 +549,13 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO * @throws TransientException If an temporary, unexpected problem occurred. */ public Collection<User<Principal>> getPendingUsers() throws TransientException throws AccessControlException, TransientException { return getUsers(config.getUserRequestsDN()); } private Collection<User<Principal>> getUsers(final String usersDN) throws TransientException throws AccessControlException, TransientException { final Collection<User<Principal>> users = new ArrayList<User<Principal>>(); Loading @@ -565,7 +565,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO logger.debug("search filter: " + filter); final String[] attributes = new String[] { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME, LDAP_NSACCOUNTLOCK }; { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME }; final SearchRequest searchRequest = new SearchRequest(usersDN, SearchScope.ONE, filter, attributes); Loading @@ -576,8 +576,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO LdapDAO.checkLdapResult(searchResult.getResultCode()); for (SearchResultEntry next : searchResult.getSearchEntries()) { if (!next.hasAttribute(LDAP_NSACCOUNTLOCK)) { final String firstName = next.getAttributeValue(LDAP_FIRST_NAME).trim(); Loading @@ -590,7 +588,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO users.add(user); } } } catch (LDAPSearchException e) { if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT) Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/UserServlet.java +2 −1 Original line number Diff line number Diff line Loading @@ -127,6 +127,8 @@ public class UserServlet extends HttpServlet { log.info(logInfo.start()); AbstractUserAction action = factory.createAction(request); action.setAcceptedContentType(getAcceptedContentType(request)); log.debug("content-type: " + getAcceptedContentType(request)); // Special case: if the calling subject has a servops X500Principal, // AND it is a GET request, do not augment the subject. Loading @@ -147,7 +149,6 @@ public class UserServlet extends HttpServlet SyncOutput syncOut = new SyncOutput(response); action.setLogInfo(logInfo); action.setSyncOut(syncOut); action.setAcceptedContentType(getAcceptedContentType(request)); try { Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/AbstractUserAction.java +0 −7 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ */ package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.ac.PersonalDetails; import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.UserAlreadyExistsException; Loading @@ -81,7 +80,6 @@ import ca.nrc.cadc.ac.json.JsonUserWriter; import ca.nrc.cadc.ac.server.PluginFactory; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.ac.server.web.SyncOutput; import ca.nrc.cadc.auth.AuthenticationUtil; import ca.nrc.cadc.ac.xml.UserListWriter; import ca.nrc.cadc.ac.xml.UserReader; import ca.nrc.cadc.ac.xml.UserRequestReader; Loading @@ -89,7 +87,6 @@ import ca.nrc.cadc.ac.xml.UserWriter; import ca.nrc.cadc.net.TransientException; import org.apache.log4j.Logger; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.Writer; Loading @@ -97,10 +94,6 @@ import java.security.AccessControlException; import java.security.Principal; import java.security.PrivilegedExceptionAction; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public abstract class AbstractUserAction implements PrivilegedExceptionAction<Object> { Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/ModifyUserAction.java +64 −3 Original line number Diff line number Diff line Loading @@ -71,11 +71,18 @@ package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.auth.AuthenticationUtil; import ca.nrc.cadc.auth.CookiePrincipal; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.IdentityType; import ca.nrc.cadc.auth.NumericPrincipal; import org.apache.log4j.Logger; import javax.security.auth.x500.X500Principal; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.security.Principal; import java.util.Iterator; import java.util.Set; Loading @@ -83,11 +90,13 @@ import java.util.Set; public class ModifyUserAction extends AbstractUserAction { private static final Logger log = Logger.getLogger(ModifyUserAction.class); private final InputStream inputStream; private final String request; private final HttpServletRequest request; ModifyUserAction(final InputStream inputStream, final String request) ModifyUserAction(final InputStream inputStream, final HttpServletRequest request) { super(); Loading @@ -102,7 +111,59 @@ public class ModifyUserAction extends AbstractUserAction final User<Principal> modifiedUser = modifyUser(user); logUserInfo(modifiedUser.getUserID().getName()); syncOut.setHeader("Location", request); final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append(request.getPathInfo()); sb.append("?idType="); // Need to find the principal type for this userID String idType = null; for (Principal principal : user.getIdentities()) { if (principal.getName().equals(modifiedUser.getUserID().getName())) { if (principal instanceof HttpPrincipal) { idType = IdentityType.USERNAME.getValue(); } else if (principal instanceof X500Principal) { idType = IdentityType.X500.getValue(); } else if (principal instanceof NumericPrincipal) { idType = IdentityType.CADC.getValue(); } else if (principal instanceof CookiePrincipal) { idType = IdentityType.COOKIE.getValue(); } } } if (idType == null) { throw new IllegalArgumentException( "Bad POST request to " + request.getServletPath() + " because unknown userID Principal"); } sb.append(idType); final String redirectUrl = sb.toString(); log.debug("redirect URL: " + redirectUrl); syncOut.setHeader("Location", redirectUrl); syncOut.setCode(303); } Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java +1 −17 Original line number Diff line number Diff line Loading @@ -169,23 +169,7 @@ public abstract class UserActionFactory if (segments.length == 1) { final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append(path); sb.append("?"); sb.append(request.getQueryString()); action = new ModifyUserAction(request.getInputStream(), sb.toString()); action = new ModifyUserAction(request.getInputStream(), request); } if (action != null) Loading