You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ca...@apache.org on 2006/07/11 20:30:26 UTC
svn commit: r420943 - in /maven/continuum/branches/continuum-acegi:
continuum-core/src/main/java/org/apache/maven/continuum/initialization/
continuum-security/continuum-security-acegi/
continuum-security/continuum-security-acegi/src/main/java/org/apach...
Author: carlos
Date: Tue Jul 11 11:30:25 2006
New Revision: 420943
URL: http://svn.apache.org/viewvc?rev=420943&view=rev
Log:
[CONTINUUM-764] Finished acegi authentication against Continuum DB, added admin user
Added:
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java (with props)
Modified:
maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/plexus-application.xml
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/secure/debug.jsp
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java?rev=420943&r1=420942&r2=420943&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java Tue Jul 11 11:30:25 2006
@@ -162,6 +162,10 @@
createPermission( "manageSchedule", "Manage Schedules" );
createPermission( "manageUsers", "Manage Users/Groups" );
+
+ createPermission( "ROLE_USER", "Authenticated User" );
+
+ createPermission( "ROLE_ADMIN", "Administrator" );
}
private Permission createPermission( String name, String description )
Modified: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml?rev=420943&r1=420942&r2=420943&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml Tue Jul 11 11:30:25 2006
@@ -25,5 +25,9 @@
<groupId>org.apache.maven.continuum</groupId>
<artifactId>continuum-model</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.continuum</groupId>
+ <artifactId>continuum-store</artifactId>
+ </dependency>
</dependencies>
</project>
Modified: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java?rev=420943&r1=420942&r2=420943&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java Tue Jul 11 11:30:25 2006
@@ -52,13 +52,28 @@
{
}
+ public void setStore( ContinuumStore store )
+ {
+ this.store = store;
+ }
+
+ /**
+ * {@link ContinuumStore} to load the user from.
+ *
+ * @return the store
+ */
+ public ContinuumStore getStore()
+ {
+ return store;
+ }
+
public UserDetails loadUserByUsername( String username )
throws UsernameNotFoundException, DataAccessException
{
ContinuumUser user;
try
{
- user = store.getUserByUsername( username );
+ user = getStore().getUserByUsername( username );
}
catch ( ContinuumStoreException e )
{
@@ -77,7 +92,7 @@
* @param user the continuum user loaded from DB
* @return the Acegi user
*/
- private UserDetails getUserDetails( ContinuumUser user )
+ UserDetails getUserDetails( ContinuumUser user )
{
List permissions = user.getGroup().getPermissions();
@@ -90,19 +105,20 @@
grantedAuthorities[i] = new GrantedAuthorityImpl( permission.getName() );
i++;
}
+ String username = user.getUsername();
+ String password = user.getHashedPassword();
boolean enabled = true;
boolean accountNonExpired = true;
boolean credentialsNonExpired = true;
boolean accountNonLocked = true;
- UserDetails userDetails = new User( user.getUsername(), user.getPassword(), enabled, accountNonExpired,
- credentialsNonExpired, accountNonLocked, grantedAuthorities );
+ UserDetails userDetails = new User( username, password, enabled, accountNonExpired, credentialsNonExpired,
+ accountNonLocked, grantedAuthorities );
return userDetails;
}
/**
- *TODO: clean up ContinuumAuthenticator
- *TODO: convert Acegi user into Continuum user?
- */
+ * TODO: convert Acegi user into Continuum user?
+ */
}
Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java?rev=420943&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java Tue Jul 11 11:30:25 2006
@@ -0,0 +1,84 @@
+package org.apache.maven.continuum.security.acegi;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.acegisecurity.providers.encoding.ShaPasswordEncoder;
+import org.acegisecurity.userdetails.UserDetails;
+import org.apache.maven.continuum.model.system.ContinuumUser;
+import org.apache.maven.continuum.model.system.Permission;
+import org.apache.maven.continuum.model.system.UserGroup;
+
+import junit.framework.TestCase;
+
+/**
+ * Test for {@link ContinuumUserDetailsService}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ContinuumUserDetailsServiceTest
+ extends TestCase
+{
+
+ private ContinuumUserDetailsService userDetailsService;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ public void testGetUserDetails()
+ {
+ Permission p1 = new Permission();
+ p1.setName( "p1" );
+ Permission p2 = new Permission();
+ p2.setName( "p2" );
+ Permission p3 = new Permission();
+ p3.setName( "p3" );
+
+ UserGroup group = new UserGroup();
+ group.addPermission( p1 );
+ group.addPermission( p2 );
+ group.addPermission( p3 );
+
+ ContinuumUser continuumUser = new ContinuumUser();
+ continuumUser.setUsername( "username" );
+ continuumUser.setPassword( "password" );
+ continuumUser.setGroup( group );
+
+ ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
+ String shaPassword = passwordEncoder.encodePassword( "password", null );
+
+ UserDetails userDetails = userDetailsService.getUserDetails( continuumUser );
+
+ assertEquals( userDetails.getUsername(), continuumUser.getUsername() );
+ assertEquals( userDetails.getPassword(), shaPassword );
+ assertEquals( userDetails.getAuthorities(), continuumUser.getUsername() );
+ }
+
+ public void testPasswordEncoding()
+ {
+ ContinuumUser continuumUser = new ContinuumUser();
+ continuumUser.setPassword( "admin" );
+
+ ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
+ String shaPassword = passwordEncoder.encodePassword( "admin", null );
+
+ assertEquals( continuumUser.getHashedPassword(), shaPassword );
+ }
+}
Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/plexus-application.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/plexus-application.xml?rev=420943&r1=420942&r2=420943&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/plexus-application.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/plexus-application.xml Tue Jul 11 11:30:25 2006
@@ -338,7 +338,7 @@
<!-- Bridge between Acegi and Continuum database -->
<component>
<role>org.acegisecurity.userdetails.UserDetailsService</role>
- <implementation>org.apache.maven.continuum.security.ContinuumAuthenticator</implementation>
+ <implementation>org.apache.maven.continuum.security.acegi.ContinuumUserDetailsService</implementation>
<requirements>
<requirement>
<role>org.apache.maven.continuum.store.ContinuumStore</role>
@@ -355,6 +355,9 @@
<field-name>userDetailsService</field-name>
</requirement>
</requirements>
+ <configuration>
+ <passwordEncoder implementation="org.acegisecurity.providers.encoding.ShaPasswordEncoder"/>
+ </configuration>
</component>
<component>
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/secure/debug.jsp
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/secure/debug.jsp?rev=420943&r1=420942&r2=420943&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/secure/debug.jsp (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/secure/debug.jsp Tue Jul 11 11:30:25 2006
@@ -32,5 +32,13 @@
<%-- other way to access the info using taglibs --%>
- <c:set var="authentication" value="${sessionScope['ACEGI_SECURITY_AUTHENTICATION']}"/>
- user: ${authentication.principal}
+ <c:set var="authentication" value="${sessionScope['ACEGI_SECURITY_CONTEXT'].authentication}"/>
+ <c:set var="user" value="${authentication.principal}"/>
+
+ user: <c:out value="${user.username}"/><br/>
+ Roles:
+ <ul>
+ <c:forEach var="item" items="${user.authorities}">
+ <li><c:out value="${item.authority}"/></li>
+ </c:forEach>
+ </ul>