You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/10/31 18:37:37 UTC
svn commit: r590766 - in
/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security:
./ src/main/java/org/apache/maven/archiva/security/
src/test/java/org/apache/maven/archiva/security/
src/test/resources/META-INF/ src/test/resources...
Author: joakime
Date: Wed Oct 31 10:37:36 2007
New Revision: 590766
URL: http://svn.apache.org/viewvc?rev=590766&view=rev
Log:
Initial work to establish archiva-security with UserRepositories concept.
Created SecurityStartup to bring startup mechanism back into archiva-security from archiva-webapp.
Created a few generic security exceptions to help pass along security problems.
Removed xwork-integration requirement from pom.
Added:
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml (with props)
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml (with props)
Modified:
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/pom.xml
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java
maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml
Modified: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/pom.xml?rev=590766&r1=590765&r2=590766&view=diff
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/pom.xml (original)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/pom.xml Wed Oct 31 10:37:36 2007
@@ -29,22 +29,40 @@
<name>Archiva Web :: Security Configuration</name>
<dependencies>
<dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-configuration</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus.redback</groupId>
+ <artifactId>redback-system</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus.redback</groupId>
+ <artifactId>redback-rbac-model</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus.redback</groupId>
<artifactId>redback-rbac-role-manager</artifactId>
</dependency>
+ <!-- Test Scoped -->
<dependency>
<groupId>org.codehaus.plexus.redback</groupId>
- <artifactId>redback-rbac-memory</artifactId>
+ <artifactId>redback-authorization-rbac</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.redback</groupId>
- <artifactId>redback-xwork-integration</artifactId>
+ <artifactId>redback-keys-memory</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
+ <groupId>org.codehaus.plexus.redback</groupId>
+ <artifactId>redback-users-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus.redback</groupId>
+ <artifactId>redback-rbac-memory</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,40 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * AccessDeniedException
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AccessDeniedException
+ extends ArchivaSecurityException
+{
+ public AccessDeniedException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public AccessDeniedException( String message )
+ {
+ super( message );
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/AccessDeniedException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java?rev=590766&r1=590765&r2=590766&view=diff
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java (original)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java Wed Oct 31 10:37:36 2007
@@ -68,4 +68,18 @@
public static final String TEMPLATE_REPOSITORY_MANAGER = "archiva-repository-manager";
public static final String TEMPLATE_REPOSITORY_OBSERVER = "archiva-repository-observer";
+
+ public static final String TEMPLATE_SYSTEM_ADMIN = "archiva-system-administrator";
+
+ public static final String TEMPLATE_GUEST = "archiva-guest";
+
+ public static String toRepositoryObserverRoleId( String repoId )
+ {
+ return TEMPLATE_REPOSITORY_OBSERVER + "-" + repoId;
+ }
+
+ public static String toRepositoryObserverRoleName( String repoId )
+ {
+ return REPOSITORY_OBSERVER_ROLE_PREFIX + " - " + repoId;
+ }
}
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,42 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.archiva.common.ArchivaException;
+
+/**
+ * ArchivaSecurityException
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ArchivaSecurityException
+ extends ArchivaException
+{
+ public ArchivaSecurityException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public ArchivaSecurityException( String message )
+ {
+ super( message );
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaSecurityException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,103 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.system.check.EnvironmentCheck;
+
+import java.util.List;
+
+/**
+ * ArchivaStandardRolesCheck tests for the existance of expected / standard roles and permissions.
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="org.codehaus.plexus.redback.system.check.EnvironmentCheck"
+ * role-hint="required-roles"
+ */
+public class ArchivaStandardRolesCheck
+ extends AbstractLogEnabled
+ implements EnvironmentCheck
+{
+ /**
+ * @plexus.requirement role-hint="cached"
+ */
+ private RBACManager rbacManager;
+
+ /**
+ * boolean detailing if this environment check has been executed
+ */
+ private boolean checked = false;
+
+ @SuppressWarnings("unchecked")
+ public void validateEnvironment( List violations )
+ {
+ if ( !checked )
+ {
+ String expectedRoles[] = new String[] {
+ ArchivaRoleConstants.SYSTEM_ADMINISTRATOR_ROLE,
+ ArchivaRoleConstants.GLOBAL_REPOSITORY_MANAGER_ROLE,
+ ArchivaRoleConstants.GLOBAL_REPOSITORY_OBSERVER_ROLE,
+ ArchivaRoleConstants.GUEST_ROLE,
+ ArchivaRoleConstants.REGISTERED_USER_ROLE,
+ ArchivaRoleConstants.USER_ADMINISTRATOR_ROLE };
+
+ getLogger().info( "Checking the existance of required roles." );
+
+ for ( String roleName : expectedRoles )
+ {
+ if ( !rbacManager.roleExists( roleName ) )
+ {
+ violations.add( "Unable to validate the existances of the '" + roleName + "' role." );
+ }
+ }
+
+ String expectedOperations[] = new String[] {
+ ArchivaRoleConstants.OPERATION_MANAGE_USERS,
+ ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION,
+ ArchivaRoleConstants.OPERATION_REGENERATE_INDEX,
+ ArchivaRoleConstants.OPERATION_RUN_INDEXER,
+ ArchivaRoleConstants.OPERATION_ACCESS_REPORT,
+ ArchivaRoleConstants.OPERATION_ADD_REPOSITORY,
+ ArchivaRoleConstants.OPERATION_DELETE_REPOSITORY,
+ ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS,
+ ArchivaRoleConstants.OPERATION_EDIT_REPOSITORY,
+ ArchivaRoleConstants.OPERATION_REPOSITORY_UPLOAD,
+ ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS,
+ "archiva-guest" };
+
+ getLogger().info( "Checking the existance of required operations." );
+
+ for ( String operation : expectedOperations )
+ {
+ if ( !rbacManager.operationExists( operation ) )
+ {
+ violations.add( "Unable to validate the existances of the '" + operation + "' operation." );
+ }
+ }
+
+ checked = true;
+ }
+
+ }
+
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaStandardRolesCheck.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,132 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.codehaus.plexus.redback.rbac.Permission;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.rbac.RbacManagerException;
+import org.codehaus.plexus.redback.rbac.RbacObjectNotFoundException;
+import org.codehaus.plexus.redback.role.RoleManager;
+import org.codehaus.plexus.redback.role.RoleManagerException;
+import org.codehaus.plexus.redback.system.SecuritySystem;
+import org.codehaus.plexus.redback.users.User;
+import org.codehaus.plexus.redback.users.UserNotFoundException;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * DefaultUserRepositories
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="org.apache.maven.archiva.security.UserRepositories"
+ * role-hint="default"
+ */
+public class DefaultUserRepositories
+ implements UserRepositories
+{
+ /**
+ * @plexus.requirement
+ */
+ private SecuritySystem securitySystem;
+
+ /**
+ * @plexus.requirement role-hint="cached"
+ */
+ private RBACManager rbacManager;
+
+ /**
+ * @plexus.requirement role-hint="default"
+ */
+ private RoleManager roleManager;
+
+ public List<String> getObservableRepositoryIds( String principal )
+ throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
+ {
+
+ try
+ {
+ User user = securitySystem.getUserManager().findUser( principal );
+
+ if ( user.isLocked() )
+ {
+ throw new AccessDeniedException( "User " + principal + "(" + user.getFullName() + ") is locked." );
+ }
+
+ Map<String, List<Permission>> permissionMap = rbacManager.getAssignedPermissionMap( principal );
+
+ List<String> repoIds = new ArrayList<String>();
+
+ for( Entry<String,List<Permission>> entry: permissionMap.entrySet() )
+ {
+ List<Permission> perms = entry.getValue();
+
+ for( Permission perm: perms )
+ {
+ System.out.println( "Principal[" + principal + "] : Permission[" + entry.getKey() + "]:" + perm.getName() + " - Operation:"
+ + perm.getOperation().getName() + " - Resource:" + perm.getResource().getIdentifier() );
+ }
+ }
+
+ System.out.println("-");
+
+ return repoIds;
+ }
+ catch ( UserNotFoundException e )
+ {
+ throw new PrincipalNotFoundException( "Unable to find principal " + principal + "" );
+ }
+ catch ( RbacObjectNotFoundException e )
+ {
+ throw new PrincipalNotFoundException( "Unable to find user role assignments for user " + principal, e );
+ }
+ catch ( RbacManagerException e )
+ {
+ throw new ArchivaSecurityException( "Unable to initialize underlying security framework: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public void createMissingRepositoryRoles( String repoId )
+ throws ArchivaSecurityException
+ {
+ try
+ {
+ if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId ) )
+ {
+ roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId );
+ }
+
+ if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId ) )
+ {
+ roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId );
+ }
+ }
+ catch ( RoleManagerException e )
+ {
+ throw new ArchivaSecurityException( "Unable to create roles for configured repositories: " + e.getMessage(),
+ e );
+ }
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/DefaultUserRepositories.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,40 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * PrincipalNotFoundException
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class PrincipalNotFoundException
+ extends ArchivaSecurityException
+{
+ public PrincipalNotFoundException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public PrincipalNotFoundException( String message )
+ {
+ super( message );
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/PrincipalNotFoundException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,206 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.maven.archiva.common.ArchivaException;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.ConfigurationNames;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.rbac.RbacManagerException;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
+import org.codehaus.plexus.redback.system.check.EnvironmentCheck;
+import org.codehaus.plexus.registry.Registry;
+import org.codehaus.plexus.registry.RegistryListener;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * SecurityStartup
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="org.apache.maven.archiva.security.SecurityStartup"
+ */
+public class SecurityStartup
+ extends AbstractLogEnabled
+ implements RegistryListener
+{
+ /**
+ * @plexus.requirement
+ */
+ private UserRepositories userRepos;
+
+ /**
+ * @plexus.requirement role-hint="cached"
+ */
+ private RBACManager rbacManager;
+
+ /**
+ * @plexus.requirement role="org.codehaus.plexus.redback.system.check.EnvironmentCheck"
+ */
+ private Map<String, EnvironmentCheck> checkers;
+
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration archivaConfiguration;
+
+ public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ if ( ConfigurationNames.isManagedRepositories( propertyName ) )
+ {
+ createMissingManagedRepositoryRoles( archivaConfiguration.getConfiguration().getManagedRepositories() );
+ }
+ }
+
+ public void assignRepositoryObserverToGuestUser( List<ManagedRepositoryConfiguration> repos )
+ {
+ 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";
+
+ try
+ {
+ UserAssignment ua;
+
+ if ( rbacManager.userAssignmentExists( principal ) )
+ {
+ ua = rbacManager.getUserAssignment( principal );
+ }
+ else
+ {
+ ua = rbacManager.createUserAssignment( principal );
+ }
+
+ ua.addRoleName( ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) );
+ rbacManager.saveUserAssignment( ua );
+ }
+ catch ( RbacManagerException e )
+ {
+ getLogger().warn(
+ "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId )
+ + "] to " + principal + " user.", e );
+ }
+ }
+ }
+
+ public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ /* do nothing */
+ }
+
+ public void createMissingManagedRepositoryRoles( List<ManagedRepositoryConfiguration> repos )
+ {
+ // NOTE: Remote Repositories do not have roles or security placed around them.
+
+ for ( ManagedRepositoryConfiguration repoConfig : repos )
+ {
+ // manage roles for repositories
+ try
+ {
+ userRepos.createMissingRepositoryRoles( repoConfig.getId() );
+ }
+ catch ( ArchivaSecurityException e )
+ {
+ getLogger().warn( e.getMessage(), e );
+ }
+ }
+ }
+
+ public void createMissingRepositoryRoles( List<String> repoIds )
+ {
+ for ( String repoId : repoIds )
+ {
+ // manage roles for repositories
+ try
+ {
+ userRepos.createMissingRepositoryRoles( repoId );
+ }
+ catch ( ArchivaSecurityException e )
+ {
+ getLogger().warn( e.getMessage(), e );
+ }
+ }
+ }
+
+ public void executeEnvironmentChecks()
+ throws ArchivaException
+ {
+ if ( ( checkers == null ) || CollectionUtils.isEmpty( checkers.values() ) )
+ {
+ throw new ArchivaException( "Unable to initialize the Redback Security Environment, "
+ + "no Environment Check components found." );
+ }
+
+ List<String> violations = new ArrayList<String>();
+
+ for ( Entry<String, EnvironmentCheck> entry : checkers.entrySet() )
+ {
+ EnvironmentCheck check = entry.getValue();
+ getLogger().info( "Running Environment Check: " + entry.getKey() );
+ check.validateEnvironment( violations );
+ }
+
+ if ( CollectionUtils.isNotEmpty( violations ) )
+ {
+ StringBuffer msg = new StringBuffer();
+ msg.append( "EnvironmentCheck Failure.\n" );
+ msg.append( "======================================================================\n" );
+ msg.append( " ENVIRONMENT FAILURE !! \n" );
+ msg.append( "\n" );
+
+ for ( String violation : violations )
+ {
+ msg.append( violation ).append( "\n" );
+ }
+
+ msg.append( "\n" );
+ msg.append( "======================================================================" );
+ getLogger().fatalError( msg.toString() );
+
+ throw new ArchivaException( "Unable to initialize Redback Security Environment, [" + violations.size()
+ + "] violation(s) encountered, See log for details." );
+ }
+ }
+
+ public void startup()
+ throws ArchivaException
+ {
+ executeEnvironmentChecks();
+
+ createMissingManagedRepositoryRoles( archivaConfiguration.getConfiguration().getManagedRepositories() );
+ archivaConfiguration.addChangeListener( this );
+
+ if ( archivaConfiguration.isDefaulted() )
+ {
+ assignRepositoryObserverToGuestUser( archivaConfiguration.getConfiguration().getManagedRepositories() );
+ }
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/SecurityStartup.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+/**
+ * UserRepositories
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public interface UserRepositories
+{
+ /**
+ * Get the list of observable repository ids for the user specified.
+ *
+ * @param principal the principle to obtain the observable repository ids from.
+ * @return the list of observable repository ids.
+ * @throws PrincipalNotFoundException
+ * @throws AccessDeniedException
+ * @throws ArchivaSecurityException
+ */
+ public List<String> getObservableRepositoryIds( String principal )
+ throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException;
+
+ /**
+ * Create any missing repository roles for the provided repository id.
+ *
+ * @param repoId the repository id to work off of.
+ * @throws ArchivaSecurityException if there was a problem creating the repository roles.
+ */
+ public void createMissingRepositoryRoles( String repoId )
+ throws ArchivaSecurityException;
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/UserRepositories.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,234 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.redback.rbac.Operation;
+import org.codehaus.plexus.redback.rbac.Permission;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.redback.rbac.Role;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
+import org.codehaus.plexus.redback.role.RoleManager;
+import org.codehaus.plexus.redback.role.RoleManagerException;
+import org.codehaus.plexus.redback.system.SecuritySystem;
+import org.codehaus.plexus.redback.users.User;
+import org.codehaus.plexus.redback.users.UserManager;
+
+import java.util.List;
+
+/**
+ * DefaultUserRepositoriesTest
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DefaultUserRepositoriesTest
+ extends PlexusTestCase
+{
+ private static final String PERMISSION_READ_REPOSITORY = "Archiva Read Repository";
+
+ private static final String USER_GUEST = "guest";
+
+ private static final String USER_ADMIN = "admin";
+
+ private static final String USER_ALPACA = "alpaca";
+
+ private SecuritySystem securitySystem;
+
+ private RBACManager rbacManager;
+
+ private RoleManager roleManager;
+
+ public void testGetObservableRepositoryIds()
+ throws Exception
+ {
+ UserRepositories userRepos = (UserRepositories) lookup( UserRepositories.class, "default" );
+ assertNotNull( userRepos );
+
+ // create some users.
+ createUser( USER_ALPACA, "Al 'Archiva' Paca" );
+
+ assertEquals( "Expected users", 3, securitySystem.getUserManager().getUsers().size() );
+
+ // some unassigned repo observer roles.
+ userRepos.createMissingRepositoryRoles( "central" );
+ userRepos.createMissingRepositoryRoles( "coporate" );
+ userRepos.createMissingRepositoryRoles( "internal" );
+ userRepos.createMissingRepositoryRoles( "snapshots" );
+ userRepos.createMissingRepositoryRoles( "secret" );
+
+ // some assigned repo observer roles.
+ assignRepositoryObserverRole( USER_ALPACA, "central" );
+ assignRepositoryObserverRole( USER_ALPACA, "corporate" );
+ assignRepositoryObserverRole( USER_GUEST, "corporate" );
+ // the global repo observer role.
+ assignGlobalRepositoryObserverRole( USER_ADMIN );
+
+ assertRepoIds( new String[] { "central", "corporate" }, userRepos.getObservableRepositoryIds( USER_ALPACA ) );
+ assertRepoIds( new String[] { "coporate" }, userRepos.getObservableRepositoryIds( USER_GUEST ) );
+ assertRepoIds( new String[] { "central", "internal", "corporate", "snapshots", "secret" }, userRepos
+ .getObservableRepositoryIds( USER_ADMIN ) );
+ }
+
+ private void assertRepoIds( String[] expectedRepoIds, List<String> observableRepositoryIds )
+ {
+ assertNotNull( "Observable Repository Ids cannot be null.", observableRepositoryIds );
+
+ if ( expectedRepoIds.length != observableRepositoryIds.size() )
+ {
+ fail( "Size of Observable Repository Ids wrong, expected <" + expectedRepoIds.length + "> but got <"
+ + observableRepositoryIds.size() + "> instead. \nExpected: [" + StringUtils.join( expectedRepoIds, "," )
+ + "]\nActual: [" + StringUtils.join( observableRepositoryIds.iterator(), "," ) + "]" );
+ }
+ }
+
+ private void assignGlobalRepositoryObserverRole( String principal )
+ throws Exception
+ {
+ Role role = createRepositoryObserverRole( ArchivaRoleConstants.GLOBAL_REPOSITORY_OBSERVER_ROLE,
+ PERMISSION_READ_REPOSITORY, Resource.GLOBAL );
+ assignRole( principal, role );
+ }
+
+ private void assignRepositoryObserverRole( String principal, String repoId )
+ throws Exception
+ {
+ // String roleId = ArchivaRoleConstants.toRepositoryObserverRoleId( repoId );
+ String roleId = ArchivaRoleConstants.toRepositoryObserverRoleName( repoId );
+ roleManager.assignRole( roleId, principal );
+
+// Role role = createRepositoryObserverRole( roleName, PERMISSION_READ_REPOSITORY, repoId );
+// assertEquals( roleName, role.getName() );
+// assignRole( principal, role );
+ }
+
+ private void assignRole( String principal, Role role )
+ throws Exception
+ {
+ UserAssignment ua;
+
+ if ( rbacManager.userAssignmentExists( principal ) )
+ {
+ ua = rbacManager.getUserAssignment( principal );
+ }
+ else
+ {
+ ua = rbacManager.createUserAssignment( principal );
+ }
+
+ ua.addRoleName( role );
+
+ rbacManager.saveUserAssignment( ua );
+ }
+
+ private void createRepositoryObserverRole( String repoId )
+ throws Exception
+ {
+ createRepositoryObserverRole( ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ),
+ PERMISSION_READ_REPOSITORY + "-" + repoId, repoId );
+ }
+
+ private Role createRepositoryObserverRole( String roleName, String permissionName, String resourceId )
+ throws Exception
+ {
+ if ( rbacManager.roleExists( roleName ) )
+ {
+ return rbacManager.getRole( roleName );
+ }
+
+ Permission perm;
+ Operation operationRepoAccess;
+ Resource resource;
+
+ // if ( rbacManager.resourceExists( resourceId ) )
+ // {
+ // resource = rbacManager.getResource( resourceId );
+ // }
+ // else
+ // {
+ // resource = rbacManager.createResource( resourceId );
+ // }
+ resource = rbacManager.createResource( resourceId );
+
+ // if ( rbacManager.operationExists( ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS ) )
+ // {
+ // operationRepoAccess = rbacManager.getOperation( ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS );
+ // }
+ // else
+ // {
+ // operationRepoAccess = rbacManager.createOperation( ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS );
+ // }
+ operationRepoAccess = rbacManager.createOperation( ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS );
+
+ // if ( rbacManager.permissionExists( permissionName ) )
+ // {
+ // perm = rbacManager.getPermission( permissionName );
+ // }
+ // else
+ // {
+ // perm = rbacManager.createPermission( permissionName );
+ // }
+ perm = rbacManager.createPermission( permissionName );
+ perm.setOperation( operationRepoAccess );
+ perm.setResource( resource );
+
+ Role role = rbacManager.createRole( roleName );
+ role.addPermission( perm );
+
+ rbacManager.saveOperation( operationRepoAccess );
+ rbacManager.savePermission( perm );
+ rbacManager.saveRole( role );
+
+ return role;
+ }
+
+ private User createUser( String principal, String fullname )
+ {
+ UserManager userManager = securitySystem.getUserManager();
+
+ User user = userManager.createUser( principal, fullname, principal + "@testable.archiva.apache.org" );
+ securitySystem.getPolicy().setEnabled( false );
+ userManager.addUser( user );
+ securitySystem.getPolicy().setEnabled( true );
+
+ return user;
+ }
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ securitySystem = (SecuritySystem) lookup( SecuritySystem.class, "testable" );
+ rbacManager = (RBACManager) lookup( RBACManager.class, "memory" );
+ roleManager = (RoleManager) lookup( RoleManager.class, "default" );
+
+ // Setup Admin User.
+ User adminUser = createUser( USER_ADMIN, "Admin User" );
+ roleManager.assignRole( ArchivaRoleConstants.TEMPLATE_SYSTEM_ADMIN, adminUser.getPrincipal().toString() );
+
+ // Setup Guest User.
+ User guestUser = createUser( USER_GUEST, "Guest User" );
+ roleManager.assignRole( ArchivaRoleConstants.TEMPLATE_GUEST, guestUser.getPrincipal().toString() );
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java Wed Oct 31 10:37:36 2007
@@ -0,0 +1,49 @@
+package org.apache.maven.archiva.security;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * SecurityStartupTest
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class SecurityStartupTest
+ extends PlexusTestCase
+{
+ private SecurityStartup secStart;
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ secStart = (SecurityStartup) lookup( SecurityStartup.class );
+ }
+
+ public void testEnvironmentChecks()
+ throws Exception
+ {
+ secStart.executeEnvironmentChecks();
+ }
+}
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/java/org/apache/maven/archiva/security/SecurityStartupTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml Wed Oct 31 10:37:36 2007
@@ -0,0 +1,195 @@
+<?xml version="1.0" ?>
+<redback-role-model>
+ <version>1.0.0</version>
+ <application>Redback XWork Integration Security Core</application>
+ <resources>
+ <resource>
+ <id>global</id>
+ <name>*</name>
+ <permanent>true</permanent>
+ <description>global resource implies full access for authorization</description>
+ </resource>
+ <resource>
+ <id>username</id>
+ <name>${username}</name>
+ <permanent>true</permanent>
+ <description>replaced with the username of the principal at authorization check time</description>
+ </resource>
+ </resources>
+ <operations>
+ <operation>
+ <id>configuration-edit</id>
+ <name>configuration-edit</name>
+ <description>edit configuration</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-create</id>
+ <name>user-management-user-create</name>
+ <description>create user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-edit</id>
+ <name>user-management-user-edit</name>
+ <description>edit user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-role</id>
+ <name>user-management-user-role</name>
+ <description>user roles</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-delete</id>
+ <name>user-management-user-delete</name>
+ <description>delete user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-list</id>
+ <name>user-management-user-list</name>
+ <description>list users</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-role-grant</id>
+ <name>user-management-role-grant</name>
+ <description>grant role</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-role-drop</id>
+ <name>user-management-role-drop</name>
+ <description>drop role</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-rbac-admin</id>
+ <name>user-management-rbac-admin</name>
+ <description>administer rbac</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>guest-access</id>
+ <name>guest-access</name>
+ <description>access guest</description>
+ <permanent>true</permanent>
+ </operation>
+ </operations>
+ <roles>
+ <role>
+ <id>system-administrator</id>
+ <name>System Administrator</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>edit-redback-configuration</id>
+ <name>Edit Redback Configuration</name>
+ <operation>configuration-edit</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>manage-rbac-setup</id>
+ <name>User RBAC Management</name>
+ <operation>user-management-rbac-admin</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>user-administrator</childRole>
+ </childRoles>
+ </role>
+ <role>
+ <id>user-administrator</id>
+ <name>User Administrator</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>drop-roles-for-anyone</id>
+ <name>Drop Roles for Anyone</name>
+ <operation>user-management-role-drop</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>grant-roles-for-anyone</id>
+ <name>Grant Roles for Anyone</name>
+ <operation>user-management-role-grant</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-create</id>
+ <name>Create Users</name>
+ <operation>user-management-user-create</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-delete</id>
+ <name>Delete Users</name>
+ <operation>user-management-user-delete</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-edit</id>
+ <name>Edit Users</name>
+ <operation>user-management-user-edit</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>access-users-roles</id>
+ <name>Access Users Roles</name>
+ <operation>user-management-user-role</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>access-user-list</id>
+ <name>Access User List</name>
+ <operation>user-management-user-list</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ <role>
+ <id>registered-user</id>
+ <name>Registered User</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>edit-user-by-username</id>
+ <name>Edit User Data by Username</name>
+ <operation>user-management-user-edit</operation>
+ <resource>username</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ <role>
+ <id>guest</id>
+ <name>Guest</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>guest-permission</id>
+ <name>Guest Permission</name>
+ <operation>guest-access</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ </roles>
+</redback-role-model>
\ No newline at end of file
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/META-INF/redback/redback-core.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml Wed Oct 31 10:37:36 2007
@@ -0,0 +1,166 @@
+<?xml version="1.0" ?>
+<component-set>
+ <components>
+
+ <component>
+ <role>org.apache.maven.archiva.security.UserRepositories</role>
+ <role-hint>default</role-hint>
+ <implementation>org.apache.maven.archiva.security.DefaultUserRepositories</implementation>
+ <description>DefaultUserRepositories</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.system.SecuritySystem</role>
+ <role-hint>testable</role-hint>
+ <field-name>securitySystem</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.RoleManager</role>
+ <role-hint>default</role-hint>
+ <field-name>roleManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.system.SecuritySystem</role>
+ <role-hint>testable</role-hint>
+ <implementation>org.codehaus.plexus.redback.system.DefaultSecuritySystem</implementation>
+ <description>DefaultSecuritySystem:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authentication.AuthenticationManager</role>
+ <field-name>authnManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authorization.Authorizer</role>
+ <role-hint>rbac</role-hint>
+ <field-name>authorizer</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.keys.KeyManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>keyManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.policy.UserSecurityPolicy</role>
+ <field-name>policy</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.authorization.Authorizer</role>
+ <role-hint>rbac</role-hint>
+ <implementation>org.codehaus.plexus.redback.authorization.rbac.RbacAuthorizer</implementation>
+ <description>RbacAuthorizer:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>manager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authorization.rbac.evaluator.PermissionEvaluator</role>
+ <role-hint>default</role-hint>
+ <field-name>evaluator</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
+ <role-hint>default</role-hint>
+ <field-name>config</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.authorization.rbac.evaluator.PermissionEvaluator</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.authorization.rbac.evaluator.DefaultPermissionEvaluator</implementation>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.RoleManager</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.DefaultRoleManager</implementation>
+ <description>RoleProfileManager:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.merger.RoleModelMerger</role>
+ <role-hint>default</role-hint>
+ <field-name>modelMerger</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.validator.RoleModelValidator</role>
+ <role-hint>default</role-hint>
+ <field-name>modelValidator</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
+ <role-hint>default</role-hint>
+ <field-name>modelProcessor</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
+ <role-hint>default</role-hint>
+ <field-name>templateProcessor</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.processor.DefaultRoleModelProcessor</implementation>
+ <description>DefaultRoleModelProcessor: inserts the components of the model that can be populated into the rbac manager</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.template.DefaultRoleTemplateProcessor</implementation>
+ <description>DefaultRoleTemplateProcessor: inserts the components of a template into the rbac manager</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ </components>
+</component-set>
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/DefaultUserRepositoriesTest.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml?rev=590766&r1=590765&r2=590766&view=diff
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml (original)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml Wed Oct 31 10:37:36 2007
@@ -34,7 +34,7 @@
</requirement>
</requirements>
</component>
- <component>
+ <component>
<role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
<role-hint>default</role-hint>
<implementation>org.codehaus.plexus.redback.role.processor.DefaultRoleModelProcessor</implementation>
@@ -47,6 +47,7 @@
</requirement>
</requirements>
</component>
+
<component>
<role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
<role-hint>default</role-hint>
@@ -60,5 +61,45 @@
</requirement>
</requirements>
</component>
+ <component>
+ <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role>
+ <role-hint>required-roles</role-hint>
+ <implementation>org.apache.maven.archiva.security.ArchivaStandardRolesCheck</implementation>
+ <description>ArchivaStandardRolesCheck tests for the existance of expected / standard roles and permissions.</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.archiva.security.SecurityStartup</role>
+ <implementation>org.apache.maven.archiva.security.SecurityStartup</implementation>
+ <description>SecurityStartup</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.RoleManager</role>
+ <role-hint>default</role-hint>
+ <field-name>roleManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role>
+ <field-name>checkers</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+ <field-name>archivaConfiguration</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
</components>
</component-set>
Added: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml?rev=590766&view=auto
==============================================================================
--- maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml (added)
+++ maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml Wed Oct 31 10:37:36 2007
@@ -0,0 +1,210 @@
+<?xml version="1.0" ?>
+<component-set>
+ <components>
+
+ <component>
+ <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role>
+ <role-hint>required-roles</role-hint>
+ <implementation>org.apache.maven.archiva.security.ArchivaStandardRolesCheck</implementation>
+ <description>ArchivaStandardRolesCheck tests for the existance of expected / standard roles and permissions.</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.archiva.security.SecurityStartup</role>
+ <implementation>org.apache.maven.archiva.security.SecurityStartup</implementation>
+ <description>SecurityStartup</description>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.archiva.security.UserRepositories</role>
+ <field-name>userRepos</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role>
+ <field-name>checkers</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+ <field-name>archivaConfiguration</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.archiva.security.UserRepositories</role>
+ <role-hint>default</role-hint>
+ <implementation>org.apache.maven.archiva.security.DefaultUserRepositories</implementation>
+ <description>DefaultUserRepositories</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.system.SecuritySystem</role>
+ <role-hint>testable</role-hint>
+ <field-name>securitySystem</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.RoleManager</role>
+ <role-hint>default</role-hint>
+ <field-name>roleManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.template.DefaultRoleTemplateProcessor</implementation>
+ <description>DefaultRoleTemplateProcessor: inserts the components of a template into the rbac manager</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.processor.DefaultRoleModelProcessor</implementation>
+ <description>DefaultRoleModelProcessor: inserts the components of the model that can be populated into the rbac manager</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.role.RoleManager</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.role.DefaultRoleManager</implementation>
+ <instantiation-strategy>singleton</instantiation-strategy>
+ <description>RoleProfileManager:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.merger.RoleModelMerger</role>
+ <role-hint>default</role-hint>
+ <field-name>modelMerger</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.validator.RoleModelValidator</role>
+ <role-hint>default</role-hint>
+ <field-name>modelValidator</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role>
+ <role-hint>default</role-hint>
+ <field-name>modelProcessor</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role>
+ <role-hint>default</role-hint>
+ <field-name>templateProcessor</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>rbacManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.PlexusContainer</role>
+ <field-name>container</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.system.SecuritySystem</role>
+ <role-hint>testable</role-hint>
+ <implementation>org.codehaus.plexus.redback.system.DefaultSecuritySystem</implementation>
+ <description>DefaultSecuritySystem:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authentication.AuthenticationManager</role>
+ <field-name>authnManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authorization.Authorizer</role>
+ <role-hint>rbac</role-hint>
+ <field-name>authorizer</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.keys.KeyManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>keyManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.policy.UserSecurityPolicy</role>
+ <field-name>policy</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.authorization.Authorizer</role>
+ <role-hint>rbac</role-hint>
+ <implementation>org.codehaus.plexus.redback.authorization.rbac.RbacAuthorizer</implementation>
+ <description>RbacAuthorizer:</description>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.rbac.RBACManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>manager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.authorization.rbac.evaluator.PermissionEvaluator</role>
+ <role-hint>default</role-hint>
+ <field-name>evaluator</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
+ <role-hint>default</role-hint>
+ <field-name>config</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.codehaus.plexus.redback.authorization.rbac.evaluator.PermissionEvaluator</role>
+ <role-hint>default</role-hint>
+ <implementation>org.codehaus.plexus.redback.authorization.rbac.evaluator.DefaultPermissionEvaluator</implementation>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.redback.users.UserManager</role>
+ <role-hint>memory</role-hint>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ </components>
+</component-set>
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-backend-security/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/SecurityStartupTest.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml