From aae839ff4b8a2577336047520bab827d7f244038 Mon Sep 17 00:00:00 2001 From: Emmanuel Venisse Date: Wed, 11 Mar 2009 06:12:17 +0000 Subject: [PATCH] [ARCHIVA-938] Remove harcoded guest user git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@752384 13f79535-47bb-0310-9956-ffa450edef68 --- .../security/ArchivaRoleConstants.java | 4 -- .../archiva/security/ArchivaXworkUser.java | 36 ++++----------- .../archiva/security/SecurityStartup.java | 25 ++++++----- .../web/startup/SecuritySynchronization.java | 45 ++++++++++--------- .../webdav/RepositoryServletSecurityTest.java | 5 +-- 5 files changed, 48 insertions(+), 67 deletions(-) diff --git a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java index 78745ec35..67d480c52 100644 --- a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java +++ b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java @@ -36,10 +36,6 @@ public class ArchivaRoleConstants public static final String GUEST_ROLE = "Guest"; - // principals - - public static final String PRINCIPAL_GUEST = "guest"; - // dynamic role prefixes public static final String REPOSITORY_MANAGER_ROLE_PREFIX = "Repository Manager"; diff --git a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java index a5bb09ece..29f7498f1 100644 --- a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java +++ b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java @@ -24,34 +24,25 @@ import java.util.Map; import org.codehaus.plexus.redback.system.SecuritySession; import org.codehaus.plexus.redback.system.SecuritySystemConstants; import org.codehaus.plexus.redback.users.User; +import org.codehaus.plexus.redback.users.UserManager; import org.codehaus.plexus.registry.Registry; /** - * ArchivaXworkUser + * ArchivaXworkUser * * @version $Id$ - * * @plexus.component role="org.apache.maven.archiva.security.ArchivaXworkUser" */ public class ArchivaXworkUser { - /** - * @plexus.requirement role-hint="commons-configuration" - */ - private Registry registry; - - private static final String KEY = "org.codehaus.plexus.redback"; - - private static String guest; - public String getActivePrincipal( Map sessionMap ) - { + { if ( sessionMap == null ) { return getGuest(); } - SecuritySession securitySession = + SecuritySession securitySession = (SecuritySession) sessionMap.get( SecuritySystemConstants.SECURITY_SESSION_KEY ); if ( securitySession == null ) @@ -64,28 +55,17 @@ public class ArchivaXworkUser return getGuest(); } - User user = securitySession.getUser(); + User user = securitySession.getUser(); if ( user == null ) { return getGuest(); } return (String) user.getPrincipal(); - } - - public String getGuest() - { - if( guest == null || "".equals( guest ) ) - { - Registry subset = registry.getSubset( KEY ); - guest = subset.getString( "redback.default.guest", ArchivaRoleConstants.PRINCIPAL_GUEST ); - } - - return guest; } - - public void setGuest( String guesT ) + + public String getGuest() { - guest = guesT; + return UserManager.GUEST_USERNAME; } } diff --git a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java index 17271f8e1..9b589d791 100644 --- a/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java +++ b/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java @@ -39,17 +39,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * SecurityStartup + * SecurityStartup * * @version $Id$ - * * @plexus.component role="org.apache.maven.archiva.security.SecurityStartup" */ public class SecurityStartup implements RegistryListener { private Logger log = LoggerFactory.getLogger( SecurityStartup.class ); - + /** * @plexus.requirement */ @@ -70,6 +69,11 @@ public class SecurityStartup */ private ArchivaConfiguration archivaConfiguration; + /** + * @plexus.requirement + */ + private ArchivaXworkUser archivaXworkUser; + public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) { if ( ConfigurationNames.isManagedRepositories( propertyName ) ) @@ -84,8 +88,7 @@ public class SecurityStartup { String repoId = repoConfig.getId(); - // TODO: Use the Redback / UserConfiguration..getString( "redback.default.guest" ) to get the right name. - String principal = "guest"; + String principal = archivaXworkUser.getGuest(); try { @@ -106,8 +109,8 @@ public class SecurityStartup catch ( RbacManagerException e ) { log.warn( - "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) - + "] to " + principal + " user.", e ); + "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) + "] to " + + principal + " user.", e ); } } } @@ -156,8 +159,8 @@ public class SecurityStartup { if ( ( checkers == null ) || CollectionUtils.isEmpty( checkers.values() ) ) { - throw new ArchivaException( "Unable to initialize the Redback Security Environment, " - + "no Environment Check components found." ); + throw new ArchivaException( + "Unable to initialize the Redback Security Environment, " + "no Environment Check components found." ); } List violations = new ArrayList(); @@ -186,8 +189,8 @@ public class SecurityStartup msg.append( "======================================================================" ); log.error( msg.toString() ); - throw new ArchivaException( "Unable to initialize Redback Security Environment, [" + violations.size() - + "] violation(s) encountered, See log for details." ); + throw new ArchivaException( "Unable to initialize Redback Security Environment, [" + violations.size() + + "] violation(s) encountered, See log for details." ); } } diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java index 76ca70288..46fd35753 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java @@ -30,6 +30,7 @@ import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.security.ArchivaRoleConstants; +import org.apache.maven.archiva.security.ArchivaXworkUser; import org.codehaus.plexus.redback.rbac.RBACManager; import org.codehaus.plexus.redback.rbac.RbacManagerException; import org.codehaus.plexus.redback.rbac.UserAssignment; @@ -45,7 +46,6 @@ import org.slf4j.LoggerFactory; * ConfigurationSynchronization * * @version $Id$ - * * @plexus.component role="org.apache.maven.archiva.web.startup.SecuritySynchronization" * role-hint="default" */ @@ -53,7 +53,7 @@ public class SecuritySynchronization implements RegistryListener { private Logger log = LoggerFactory.getLogger( SecuritySynchronization.class ); - + /** * @plexus.requirement role-hint="default" */ @@ -74,6 +74,11 @@ public class SecuritySynchronization */ private ArchivaConfiguration archivaConfiguration; + /** + * @plexus.requirement + */ + private ArchivaXworkUser archivaXworkUser; + public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) { if ( ConfigurationNames.isManagedRepositories( propertyName ) ) @@ -96,18 +101,18 @@ public class SecuritySynchronization // manage roles for repositories try { - if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoConfig - .getId() ) ) + if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, + repoConfig.getId() ) ) { - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoConfig - .getId() ); + roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, + repoConfig.getId() ); } - if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoConfig - .getId() ) ) + if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, + repoConfig.getId() ) ) { - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoConfig - .getId() ); + roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, + repoConfig.getId() ); } } catch ( RoleManagerException e ) @@ -137,8 +142,8 @@ public class SecuritySynchronization { if ( ( checkers == null ) || CollectionUtils.isEmpty( checkers.values() ) ) { - throw new ArchivaException( "Unable to initialize the Redback Security Environment, " - + "no Environment Check components found." ); + throw new ArchivaException( + "Unable to initialize the Redback Security Environment, " + "no Environment Check components found." ); } List violations = new ArrayList(); @@ -172,8 +177,8 @@ public class SecuritySynchronization msg.append( "======================================================================" ); log.error( msg.toString() ); - throw new ArchivaException( "Unable to initialize Redback Security Environment, [" + violations.size() - + "] violation(s) encountered, See log for details." ); + throw new ArchivaException( "Unable to initialize Redback Security Environment, [" + violations.size() + + "] violation(s) encountered, See log for details." ); } } @@ -182,10 +187,9 @@ public class SecuritySynchronization for ( ManagedRepositoryConfiguration repoConfig : repos ) { String repoId = repoConfig.getId(); - - // TODO: Use the Redback / UserConfiguration..getString( "redback.default.guest" ) to get the right name. - String principal = "guest"; - + + String principal = archivaXworkUser.getGuest(); + try { UserAssignment ua; @@ -204,8 +208,9 @@ public class SecuritySynchronization } catch ( RbacManagerException e ) { - log.warn( "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) - + "] to " + principal + " user.", e ); + log.warn( + "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) + "] to " + + principal + " user.", e ); } } } diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletSecurityTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletSecurityTest.java index 4624be34a..15049a487 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletSecurityTest.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletSecurityTest.java @@ -85,8 +85,6 @@ public class RepositoryServletSecurityTest private HttpAuthenticator httpAuth; - private ArchivaXworkUser archivaXworkUser; - private RepositoryServlet servlet; public void setUp() @@ -125,8 +123,7 @@ public class RepositoryServletSecurityTest httpAuthControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER ); httpAuth = (HttpAuthenticator) httpAuthControl.getMock(); - archivaXworkUser = new ArchivaXworkUser(); - archivaXworkUser.setGuest( "guest" ); + ArchivaXworkUser archivaXworkUser = (ArchivaXworkUser) lookup( ArchivaXworkUser.class ); davSessionProvider = new ArchivaDavSessionProvider( servletAuth, httpAuth, archivaXworkUser ); } -- 2.39.5