|
From: <fc...@us...> - 2007-08-30 15:40:20
|
Revision: 412
http://openutils.svn.sourceforge.net/openutils/?rev=412&view=rev
Author: fcarone
Date: 2007-08-30 08:40:19 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Test app added, but everything is in progress
Modified Paths:
--------------
trunk/openutils-hibernate-security/pom.xml
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java
trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Added Paths:
-----------
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Removed Paths:
-------------
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/pom.xml 2007-08-30 15:40:19 UTC (rev 412)
@@ -13,8 +13,31 @@
<name>openutils-hibernate-security</name>
<version>0.0.1-SNAPSHOT</version>
<description>Hibernate Security classes</description>
+ <properties>
+ <spring.version>2.0.6</spring.version>
+ </properties>
<dependencies>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-dao</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-usermanagement</artifactId>
<version>1.1.1</version>
@@ -69,7 +92,7 @@
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
- <version>2.3</version>
+ <version>2.2</version>
</dependency>
<dependency>
<groupId>org.acegisecurity</groupId>
Copied: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java (from rev 393, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java)
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java (rev 0)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.aop;
+
+import it.openutils.hibernate.security.dataobject.SecurityRule;
+import it.openutils.hibernate.security.services.SecurityRuleManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.Filter;
+import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
+ * @author fcarone
+ * @version $Id: $
+ */
+public class HibernateDAOSecurityInterceptor implements MethodInterceptor
+{
+
+ /**
+ * Logger.
+ */
+ private Logger log = LoggerFactory.getLogger(HibernateDAOSecurityInterceptor.class);
+
+ private SecurityRuleManager securityRuleManager;
+
+ private SessionFactory sessionFactory;
+
+ public HibernateDAOSecurityInterceptor()
+ {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object invoke(MethodInvocation invocation) throws Throwable
+ {
+ Object[] arguments = invocation.getArguments();
+ Object checkArgument = arguments[arguments.length - 1];
+ if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
+ {
+ return invocation.proceed();
+ }
+ if (!(checkArgument instanceof List))
+ {
+ return invocation.proceed();
+ }
+
+ String entity = StringUtils.EMPTY;
+ for (int i = 0; i < arguments.length; i++)
+ {
+ Object argument = arguments[i];
+ if (sessionFactory.getClassMetadata(argument.getClass()) != null)
+ {
+ entity = argument.getClass().getCanonicalName();
+ break;
+ }
+ }
+
+ // the current invocation is not about any session managed entity
+ if (StringUtils.isEmpty(entity))
+ {
+ return invocation.proceed();
+ }
+
+ GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
+ List<String> roles = new ArrayList<String>();
+ for (int i = 0; i < authorities.length; i++)
+ {
+ roles.add(authorities[i].getAuthority());
+ }
+ List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
+
+ if (rules.isEmpty())
+ {
+ String grantedRoles = StringUtils.EMPTY;
+ for (int i = 0; i < authorities.length; i++)
+ {
+ grantedRoles += authorities[i].getAuthority() + " ";
+ }
+ log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
+ throw new SecurityException("Access denied");
+ }
+
+ Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
+
+ Criterion sqlCriterion = Restrictions.sqlRestriction(filter.getFilterDefinition().getDefaultFilterCondition());
+
+ if (StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
+ {
+ Object argument = arguments[arguments.length - 1];
+ ((List) argument).add(sqlCriterion);
+ }
+
+ Object result = invocation.proceed();
+
+ return result;
+ }
+
+ /**
+ * Sets the securityRuleManager.
+ * @param securityRuleManager the securityRuleManager to set
+ */
+ public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
+ {
+ this.securityRuleManager = securityRuleManager;
+ }
+
+ /**
+ * Sets the sessionFactory.
+ * @param sessionFactory the sessionFactory to set
+ */
+ public void setSessionFactory(SessionFactory sessionFactory)
+ {
+ this.sessionFactory = sessionFactory;
+ }
+
+}
Deleted: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
- */
-package it.openutils.hibernate.security.aop;
-
-import it.openutils.hibernate.security.dataobject.SecurityRule;
-import it.openutils.hibernate.security.services.SecurityRuleManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.acegisecurity.GrantedAuthority;
-import org.acegisecurity.context.SecurityContextHolder;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
-import org.apache.commons.lang.StringUtils;
-import org.hibernate.Filter;
-import org.hibernate.SessionFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
- * @author fcarone
- * @version $Id: $
- */
-public class HibernateRUDSecurityInterceptor implements MethodInterceptor
-{
-
- /**
- * Logger.
- */
- private Logger log = LoggerFactory.getLogger(HibernateRUDSecurityInterceptor.class);
-
- private SecurityRuleManager securityRuleManager;
-
- private SessionFactory sessionFactory;
-
- /**
- * {@inheritDoc}
- */
- public Object invoke(MethodInvocation invocation) throws Throwable
- {
- Object[] arguments = invocation.getArguments();
-
- String entity = StringUtils.EMPTY;
- for (int i = 0; i < arguments.length; i++)
- {
- Object argument = arguments[i];
- if (sessionFactory.getClassMetadata(argument.getClass()) != null)
- {
- entity = argument.getClass().getCanonicalName();
- break;
- }
- }
-
- // the current invocation is not about any session managed entity
- if (StringUtils.isEmpty(entity))
- {
- return invocation.proceed();
- }
-
- GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
- List<String> roles = new ArrayList<String>();
- for (int i = 0; i < authorities.length; i++)
- {
- roles.add(authorities[i].getAuthority());
- }
- List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
-
- if (rules.isEmpty())
- {
- String grantedRoles = StringUtils.EMPTY;
- for (int i = 0; i < authorities.length; i++)
- {
- grantedRoles += authorities[i].getAuthority() + " ";
- }
- log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
- throw new SecurityException("Access is denied");
- }
-
- Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
-
- sessionFactory.getCurrentSession().enableFilter(filter.getName());
- Object result = invocation.proceed();
- sessionFactory.getCurrentSession().disableFilter(filter.getName());
- return result;
- }
-
- /**
- * Sets the securityRuleManager.
- * @param securityRuleManager the securityRuleManager to set
- */
- public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
- {
- this.securityRuleManager = securityRuleManager;
- }
-
- /**
- * Sets the sessionFactory.
- * @param sessionFactory the sessionFactory to set
- */
- public void setSessionFactory(SessionFactory sessionFactory)
- {
- this.sessionFactory = sessionFactory;
- }
-
-}
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -41,6 +41,7 @@
* @throws SecurityException If the bean class cannot be accessed
* @throws NoSuchFieldException If the property contained in the security rule refers to a bean non-existent field
*/
+ @SuppressWarnings("unchecked")
public JavaBeanFilter(String bean, List<SecurityRule> securityRules)
throws ClassNotFoundException,
InstantiationException,
@@ -165,6 +166,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings("unchecked")
public Filter setParameterList(String name, Collection values)
{
return this;
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,37 @@
+package it.openutils.hibernate.security;
+
+import it.openutils.hibernate.security.apptest.DummyDAO;
+import it.openutils.hibernate.security.apptest.DummyDataobject;
+import it.openutils.testing.junit.SpringTestCase;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class SecurityIntegrationTest extends SpringTestCase
+{
+
+ private DummyDAO securedObject;
+
+ /**
+ * @throws Exception Any exception
+ */
+ @Test
+ public void testRulesApplication() throws Exception
+ {
+ securedObject = (DummyDAO) ctx.getBean("dummyDAO");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ }
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import it.openutils.dao.hibernate.HibernateDAO;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public interface DummyDAO extends HibernateDAO<DummyDataobject, Long>
+{
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import it.openutils.dao.hibernate.HibernateDAOImpl;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class DummyDaoImpl extends HibernateDAOImpl<DummyDataobject, Long> implements DummyDAO
+{
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected Class<DummyDataobject> getReferenceClass()
+ {
+ return DummyDataobject.class;
+ }
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class DummyDataobject
+{
+
+ /**
+ * serial version UID
+ */
+ private static final long serialVersionUID = 1867418705382284287L;
+
+ @Id
+ @Column(name = "ID", precision = 18)
+ private Long id;
+
+ @Column(name = "INTVALUE", precision = 10)
+ private Integer intValue;
+
+ @Column(name = "STRINGVALUE", length = 16)
+ private String stringValue;
+
+
+ /**
+ * Returns the stringValue.
+ * @return the stringValue
+ */
+ public String getStringValue()
+ {
+ return stringValue;
+ }
+
+
+ /**
+ * Sets the stringValue.
+ * @param stringValue the stringValue to set
+ */
+ public void setStringValue(String stringValue)
+ {
+ this.stringValue = stringValue;
+ }
+
+
+
+ /**
+ * Returns the id.
+ * @return the id
+ */
+ public Long getId()
+ {
+ return id;
+ }
+
+
+
+ /**
+ * Sets the id.
+ * @param id the id to set
+ */
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+
+
+ /**
+ * Returns the intValue.
+ * @return the intValue
+ */
+ public Integer getIntValue()
+ {
+ return intValue;
+ }
+
+
+
+ /**
+ * Sets the intValue.
+ * @param intValue the intValue to set
+ */
+ public void setIntValue(Integer intValue)
+ {
+ this.intValue = intValue;
+ }
+
+
+
+}
Modified: trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-30 15:40:19 UTC (rev 412)
@@ -3,6 +3,7 @@
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
- <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
+ <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
+ <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
</session-factory>
</hibernate-configuration>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-30 15:40:19 UTC (rev 412)
@@ -4,9 +4,16 @@
<beans>
<bean id="securityRuleDAO" parent="txProxyTemplate">
<property name="target">
- <bean class="it.openutils.hibernate.security.dao.SecurityRuleDAOImpl">
+ <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</property>
+ </bean>
+ <bean id="dummyDAO" parent="txProxyTemplate">
+ <property name="target">
+ <bean class="it.openutils.hibernate.security.apptest.DummyDaoImpl">
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+ </property>
</bean>
</beans>
\ No newline at end of file
Added: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml (rev 0)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
+"http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+ <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+ <property name="securityRuleManager" ref="securityRuleManager" />
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+ <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+ <property name="beanNames">
+ <list>
+ <idref bean="dummyDAO" />
+ </list>
+ </property>
+ <property name="interceptorNames">
+ <list>
+ <value>securityInterceptor</value>
+ </list>
+ </property>
+ </bean>
+</beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-30 15:40:19 UTC (rev 412)
@@ -4,5 +4,8 @@
<import resource="classpath:spring-database.xml" />
<import resource="classpath:spring-hibernate.xml" />
<import resource="classpath:spring-dao.xml" />
- <import resource="classpath:spring-managers.xml" />
+ <import resource="classpath:spring-managers.xml" />
+ <import resource="classpath:spring-security.xml" />
+
+
</beans>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fc...@us...> - 2007-08-31 12:29:38
|
Revision: 425
http://openutils.svn.sourceforge.net/openutils/?rev=425&view=rev
Author: fcarone
Date: 2007-08-31 05:29:23 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
Sample test application works
Modified Paths:
--------------
trunk/openutils-hibernate-security/pom.xml
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
trunk/openutils-hibernate-security/src/test/resources/database.properties
trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Added Paths:
-----------
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/pom.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -50,12 +50,12 @@
<dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-bshd5</artifactId>
- <version>1.0.5</version>
+ <version>1.0.7</version>
</dependency>
<dependency>
<groupId>net.sourceforge.openutils</groupId>
- <artifactId>openutils-testing</artifactId>
- <version>1.0</version>
+ <artifactId>openutils-testing-junit</artifactId>
+ <version>1.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -128,6 +128,12 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <version>1.8.0.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 12:29:23 UTC (rev 425)
@@ -39,14 +39,10 @@
private SessionFactory sessionFactory;
- public HibernateDAOSecurityInterceptor()
- {
- super();
- }
-
/**
* {@inheritDoc}
*/
+ @SuppressWarnings("unchecked")
public Object invoke(MethodInvocation invocation) throws Throwable
{
Object[] arguments = invocation.getArguments();
@@ -77,6 +73,11 @@
return invocation.proceed();
}
+ if (SecurityContextHolder.getContext().getAuthentication() == null)
+ {
+ throw new SecurityException("Authentication is not valid");
+ }
+
GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
List<String> roles = new ArrayList<String>();
for (int i = 0; i < authorities.length; i++)
@@ -129,4 +130,5 @@
this.sessionFactory = sessionFactory;
}
+
}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2007-08-31 12:29:23 UTC (rev 425)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security;
+
+import java.sql.Types;
+
+import org.dbunit.dataset.datatype.DataType;
+import org.dbunit.dataset.datatype.DataTypeException;
+import org.dbunit.dataset.datatype.DefaultDataTypeFactory;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class HsqlDatatypeFactory extends DefaultDataTypeFactory
+{
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
+ {
+ if (sqlType == Types.BOOLEAN)
+ {
+ return DataType.BOOLEAN;
+ }
+ return super.createDataType(sqlType, sqlTypeName);
+ }
+}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 12:29:23 UTC (rev 425)
@@ -1,14 +1,28 @@
package it.openutils.hibernate.security;
+import it.openutils.hibernate.example.FilterMetadata;
import it.openutils.hibernate.security.apptest.DummyDAO;
import it.openutils.hibernate.security.apptest.DummyDataobject;
-import it.openutils.testing.junit.SpringTestCase;
+import it.openutils.testing.junit.DbUnitTestCase;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import org.acegisecurity.Authentication;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.acegisecurity.context.SecurityContextImpl;
+import org.acegisecurity.providers.AuthenticationProvider;
+import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.dbunit.database.DatabaseConfig;
+import org.dbunit.database.IDatabaseConnection;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Order;
import org.junit.Assert;
import org.junit.Test;
+
/*
* Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
*/
@@ -17,20 +31,51 @@
* @author fcarone
* @version $Id: $
*/
-public class SecurityIntegrationTest extends SpringTestCase
+public class SecurityIntegrationTest extends DbUnitTestCase
{
private DummyDAO securedObject;
+
+
/**
+ * {@inheritDoc}
+ */
+ @Override
+ protected IDatabaseConnection createConnection() throws SQLException
+ {
+ IDatabaseConnection connection = super.createConnection();
+ DatabaseConfig config = connection.getConfig();
+ config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqlDatatypeFactory());
+ return connection;
+ }
+
+
+
+ /**
* @throws Exception Any exception
*/
@Test
public void testRulesApplication() throws Exception
{
+ // emulate authentication
+ AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
+ Authentication authentication = new UsernamePasswordAuthenticationToken("UserUno", "password");
+ authentication = authenticationProvider.authenticate(authentication);
+ SecurityContextImpl sci = new SecurityContextImpl();
+ sci.setAuthentication(authentication);
+ SecurityContextHolder.setContext(sci);
+
+ // test
securedObject = (DummyDAO) ctx.getBean("dummyDAO");
DummyDataobject filter = new DummyDataobject();
- List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(
+ filter,
+ new Order[0],
+ new HashMap<String, FilterMetadata>(),
+ 500,
+ 0,
+ new ArrayList<Criterion>());
Assert.assertNotNull(dummyObjects);
}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2007-08-31 12:29:23 UTC (rev 425)
@@ -4,13 +4,17 @@
package it.openutils.hibernate.security.apptest;
import javax.persistence.Column;
+import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Table;
/**
* @author fcarone
* @version $Id: $
*/
+@Entity
+@Table(name = "DUMMYDATAOBJECT")
public class DummyDataobject
{
Added: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml (rev 0)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -0,0 +1,127 @@
+<!DOCTYPE dataset SYSTEM "dataset.dtd">
+<dataset>
+ <table name="APP_USER">
+ <column>ID_USER</column>
+ <column>PASSWORD</column>
+ <column>ENABLED</column>
+ <column>NAME</column>
+ <column>SURNAME</column>
+ <column>EMAIL</column>
+ <row>
+ <value>UserUno</value>
+ <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
+ <value>1</value>
+ <value>Gino</value>
+ <value>Rossi</value>
+ <value>ro...@ba...</value>
+ </row>
+ <row>
+ <value>UserDue</value>
+ <value>password</value>
+ <value>1</value>
+ <value>Mario</value>
+ <value>Verdi</value>
+ <value>ve...@ba...</value>
+ </row>
+ </table>
+ <table name="APP_GROUP">
+ <column>ID_GROUP</column>
+ <column>DESCRIPTION</column>
+ <column>ENABLED</column>
+ <row>
+ <value>GRUPPOUNO</value>
+ <value>descrizione</value>
+ <value>1</value>
+ </row>
+ <row>
+ <value>GRUPPODUE</value>
+ <value>descrizione</value>
+ <value>1</value>
+ </row>
+ </table>
+ <table name="APP_ROLE">
+ <column>ID_ROLE</column>
+ <column>DESCRIPTION</column>
+ <row>
+ <value>RoleUno</value>
+ <value>descr</value>
+ </row>
+ <row>
+ <value>RoleDue</value>
+ <value>descr2</value>
+ </row>
+ <row>
+ <value>RoleTre</value>
+ <value>descr3</value>
+ </row>
+ </table>
+ <table name="APP_USER_GROUP">
+ <column>ID_USER</column>
+ <column>ID_GROUP</column>
+ <row>
+ <value>UserUno</value>
+ <value>GRUPPOUNO</value>
+ </row>
+ <row>
+ <value>UserUno</value>
+ <value>GRUPPODUE</value>
+ </row>
+ </table>
+ <table name="APP_GROUP_ROLE">
+ <column>ID_GROUP</column>
+ <column>ID_ROLE</column>
+ <row>
+ <value>GRUPPOUNO</value>
+ <value>RoleUno</value>
+ </row>
+ <row>
+ <value>GRUPPOUNO</value>
+ <value>RoleDue</value>
+ </row>
+ <row>
+ <value>GRUPPODUE</value>
+ <value>RoleTre</value>
+ </row>
+ </table>
+
+ <table name="SECURITY_RULE">
+ <column>ID_SECURITY_RULE</column>
+ <column>ROLE</column>
+ <column>ENTITY</column>
+ <column>PROPERTY</column>
+ <column>VALUE</column>
+ <column>MODIFIER</column>
+ <row>
+ <value>1</value>
+ <value>RoleUno</value>
+ <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+ <value>intValue</value>
+ <value>1</value>
+ <value>EQUALS</value>
+ </row>
+ </table>
+ <table name="SECRULE_PERMISSION">
+ <column>ID_SECURITY_RULE</column>
+ <column>PERMISSION</column>
+ <row>
+ <value>1</value>
+ <value>LOAD</value>
+ </row>
+ </table>
+ <table name="DUMMYDATAOBJECT">
+ <column>ID</column>
+ <column>INTVALUE</column>
+ <column>STRINGVALUE</column>
+ <row>
+ <value>0</value>
+ <value>0</value>
+ <value>ABC</value>
+ </row>
+ <row>
+ <value>1</value>
+ <value>1</value>
+ <value>DEF</value>
+ </row>
+ </table>
+</dataset>
+
Modified: trunk/openutils-hibernate-security/src/test/resources/database.properties
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 12:29:23 UTC (rev 425)
@@ -2,10 +2,11 @@
# i file per la configurazione del db utilizzati dall'applicazione web sono in
# src/main/web-app/WEB-INF
-hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
-hibernate.dialect=org.hibernate.dialect.DerbyDialect
-hibernate.connection.username=ikam
+#hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
+#hibernate.dialect=org.hibernate.dialect.DerbyDialect
+hibernate.connection.driver=org.hsqldb.jdbcDriver
+hibernate.dialect=org.hibernate.dialect.HSQLDialect
+hibernate.connection.username=sa
hibernate.connection.password=
-hibernate.connection.url=jdbc:derby:target/db/openutils-usermanagement-db-test;create=true
-hibernate.hbm2ddl.auto=update
-
+hibernate.connection.url=jdbc:hsqldb:mem:hibernate-security
+hibernate.hbm2ddl.auto=create-drop
Modified: trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -4,6 +4,9 @@
<hibernate-configuration>
<session-factory>
<mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
- <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
+ <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
+ <mapping class="it.openutils.usermanagement.dataobjects.User" />
+ <mapping class="it.openutils.usermanagement.dataobjects.Group" />
+ <mapping class="it.openutils.usermanagement.dataobjects.Role" />
</session-factory>
</hibernate-configuration>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -1,7 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans>
+ <bean id="userDAO" parent="txProxyTemplate">
+ <property name="target">
+ <bean class="it.openutils.usermanagement.dao.UserDAOImpl">
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+ </property>
+ </bean>
<bean id="securityRuleDAO" parent="txProxyTemplate">
<property name="target">
<bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -19,7 +19,7 @@
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="hibernate.show_sql">false</prop>
- <prop key="hibernate.use_sql_comments">false</prop>
+ <prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -17,5 +17,28 @@
<value>securityInterceptor</value>
</list>
</property>
- </bean>
+ </bean>
+
+ <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+ <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
+ autowire="byType">
+ <property name="userDao" ref="userDAO" />
+ </bean>
+ <bean id="authenticationProvider" class="org.springframework.aop.framework.ProxyFactoryBean" lazy-init="true">
+ <property name="targetName" value="authenticationProviderDB" />
+ </bean>
+ <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />
+ <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
+ <property name="allowIfAllAbstainDecisions" value="false" />
+ <property name="decisionVoters">
+ <list>
+ <ref bean="roleVoter" />
+ </list>
+ </property>
+ </bean>
+ <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
+ lazy-init="true">
+ <property name="userDetailsService" ref="userDetailsService" />
+ <property name="passwordEncoder" ref="passwordEncoder" />
+ </bean>
</beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-31 12:29:23 UTC (rev 425)
@@ -6,6 +6,4 @@
<import resource="classpath:spring-dao.xml" />
<import resource="classpath:spring-managers.xml" />
<import resource="classpath:spring-security.xml" />
-
-
</beans>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fc...@us...> - 2007-08-31 17:03:28
|
Revision: 426
http://openutils.svn.sourceforge.net/openutils/?rev=426&view=rev
Author: fcarone
Date: 2007-08-31 10:03:23 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
Trying to inject security with an aop advice
Modified Paths:
--------------
trunk/openutils-hibernate-security/pom.xml
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
trunk/openutils-hibernate-security/src/test/resources/database.properties
trunk/openutils-hibernate-security/src/test/resources/log4j.xml
trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Added Paths:
-----------
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/pom.xml 2007-08-31 17:03:23 UTC (rev 426)
@@ -1,20 +1,20 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+<?xml version="1.0"?>
+<project>
<parent>
+ <artifactId>openutils</artifactId>
<groupId>net.sourceforge.openutils</groupId>
- <artifactId>openutils</artifactId>
<version>3</version>
<relativePath>..</relativePath>
</parent>
+ <modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-hibernate-security</artifactId>
- <packaging>jar</packaging>
<name>openutils-hibernate-security</name>
<version>0.0.1-SNAPSHOT</version>
<description>Hibernate Security classes</description>
<properties>
<spring.version>2.0.6</spring.version>
+ <aspectj.version>1.5.3</aspectj.version>
</properties>
<dependencies>
<dependency>
@@ -38,6 +38,48 @@
<version>${spring.version}</version>
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-hibernate3</artifactId>
+ <version>${spring.version}</version>
+ <exclusions>
+ <exclusion>
+ <!-- already imported cglib-nodep by spring -->
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <version>2.1_3</version>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>2.2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm-attrs</artifactId>
+ <version>2.2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm-commons</artifactId>
+ <version>2.2.3</version>
+ </dependency>
+ <dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-usermanagement</artifactId>
<version>1.1.1</version>
@@ -67,11 +109,25 @@
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.3.ga</version>
+ <exclusions>
+ <exclusion>
+ <!-- already imported cglib-nodep by spring -->
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.2.1.ga</version>
+ <exclusions>
+ <exclusion>
+ <!-- already imported cglib-nodep by spring -->
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
@@ -100,34 +156,28 @@
<version>1.0.3</version>
<exclusions>
<exclusion>
+ <artifactId>spring-remoting</artifactId>
<groupId>org.springframework</groupId>
- <artifactId>spring-remoting</artifactId>
</exclusion>
<exclusion>
+ <artifactId>spring-jdbc</artifactId>
<groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
</exclusion>
<exclusion>
+ <artifactId>spring-support</artifactId>
<groupId>org.springframework</groupId>
- <artifactId>spring-support</artifactId>
</exclusion>
<exclusion>
+ <artifactId>logkit</artifactId>
<groupId>logkit</groupId>
- <artifactId>logkit</artifactId>
</exclusion>
<exclusion>
+ <artifactId>avalon-framework</artifactId>
<groupId>avalon-framework</groupId>
- <artifactId>avalon-framework</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- <version>10.2.2.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
Added: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java (rev 0)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2007-08-31 17:03:23 UTC (rev 426)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.aop;
+
+import java.util.List;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+@Aspect
+public class AOPSecurity
+{
+
+ /**
+ * Logger.
+ */
+ private Logger log = LoggerFactory.getLogger(AOPSecurity.class);
+
+ /**
+ * @param pjp The proceeding joinpoint
+ * @param filter The entity we are going to filter
+ * @param additionalCriteria The additional criteria list
+ * @return The execution invocation result
+ * @throws Throwable Any exception occurring in the invoked method
+ */
+// @Around("execution(* findFiltered(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
+// " args(filter, .., additionalCriteria)")
+ @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
+ " args(filter, .., additionalCriteria)")
+ public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
+ throws Throwable
+ {
+ log.debug("applying rules for {} with criteria {}", filter.toString(), additionalCriteria);
+ additionalCriteria.add(Restrictions.sqlRestriction("INTVALUE = 1"));
+ Object result = pjp.proceed();
+ return result;
+ }
+}
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 17:03:23 UTC (rev 426)
@@ -45,6 +45,7 @@
@SuppressWarnings("unchecked")
public Object invoke(MethodInvocation invocation) throws Throwable
{
+ log.debug("Applying security rules");
Object[] arguments = invocation.getArguments();
Object checkArgument = arguments[arguments.length - 1];
if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
@@ -93,7 +94,12 @@
{
grantedRoles += authorities[i].getAuthority() + " ";
}
- log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
+ log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
+ .getContext()
+ .getAuthentication()
+ .getPrincipal()
+ .toString(), grantedRoles);
+
throw new SecurityException("Access denied");
}
@@ -130,5 +136,4 @@
this.sessionFactory = sessionFactory;
}
-
}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 17:03:23 UTC (rev 426)
@@ -50,21 +50,24 @@
return connection;
}
+ private void authenticate(String username, String password)
+ {
+ AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
+ Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
+ authentication = authenticationProvider.authenticate(authentication);
+ SecurityContextImpl sci = new SecurityContextImpl();
+ sci.setAuthentication(authentication);
+ SecurityContextHolder.setContext(sci);
+ }
-
/**
* @throws Exception Any exception
*/
@Test
- public void testRulesApplication() throws Exception
+ public void testFindFiltered() throws Exception
{
// emulate authentication
- AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
- Authentication authentication = new UsernamePasswordAuthenticationToken("UserUno", "password");
- authentication = authenticationProvider.authenticate(authentication);
- SecurityContextImpl sci = new SecurityContextImpl();
- sci.setAuthentication(authentication);
- SecurityContextHolder.setContext(sci);
+ authenticate("UserUno", "password");
// test
securedObject = (DummyDAO) ctx.getBean("dummyDAO");
@@ -77,6 +80,12 @@
0,
new ArrayList<Criterion>());
Assert.assertNotNull(dummyObjects);
+ Assert.assertEquals(1, dummyObjects.size());
+
+ dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ Assert.assertEquals(1, dummyObjects.size());
+
}
}
Modified: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2007-08-31 17:03:23 UTC (rev 426)
@@ -9,6 +9,7 @@
<column>EMAIL</column>
<row>
<value>UserUno</value>
+ <!-- sha1 for 'password' -->
<value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
<value>1</value>
<value>Gino</value>
@@ -17,7 +18,8 @@
</row>
<row>
<value>UserDue</value>
- <value>password</value>
+ <!-- sha1 for 'password' -->
+ <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
<value>1</value>
<value>Mario</value>
<value>Verdi</value>
Modified: trunk/openutils-hibernate-security/src/test/resources/database.properties
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 17:03:23 UTC (rev 426)
@@ -10,3 +10,4 @@
hibernate.connection.password=
hibernate.connection.url=jdbc:hsqldb:mem:hibernate-security
hibernate.hbm2ddl.auto=create-drop
+hibernate.show_sql=true
Modified: trunk/openutils-hibernate-security/src/test/resources/log4j.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/log4j.xml 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/log4j.xml 2007-08-31 17:03:23 UTC (rev 426)
@@ -37,6 +37,9 @@
</category>
<category name="it.openutils.dbupdate.DbSetupManagerImpl">
<priority value="INFO" />
+ </category>
+ <category name="it.openutils.hibernate.security.aop">
+ <priority value="DEBUG" />
</category>
<root>
<priority value="debug" />
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 17:03:23 UTC (rev 426)
@@ -1,25 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
- <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
- <property name="securityRuleManager" ref="securityRuleManager" />
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
- <property name="beanNames">
- <list>
- <idref bean="dummyDAO" />
- </list>
- </property>
- <property name="interceptorNames">
- <list>
- <value>securityInterceptor</value>
- </list>
- </property>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
+ <aop:aspectj-autoproxy/>
+
+ <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity" />
+
+ <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+ <property name="securityRuleManager" ref="securityRuleManager" />
+ <property name="sessionFactory" ref="sessionFactory" />
</bean>
-
- <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+
+<!--
+ <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+ <property name="beanNames">
+ <list>
+ <idref bean="dummyDAO" />
+ </list>
+ </property>
+ <property name="interceptorNames">
+ <list>
+ <value>securityInterceptor</value>
+ </list>
+ </property>
+ </bean>
+ -->
+
+ <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
<bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
autowire="byType">
<property name="userDao" ref="userDAO" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fc...@us...> - 2007-09-03 09:00:57
|
Revision: 429
http://openutils.svn.sourceforge.net/openutils/?rev=429&view=rev
Author: fcarone
Date: 2007-09-03 01:31:00 -0700 (Mon, 03 Sep 2007)
Log Message:
-----------
AOP security sample application works
Modified Paths:
--------------
trunk/openutils-hibernate-security/pom.xml
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Removed Paths:
-------------
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/pom.xml 2007-09-03 08:31:00 UTC (rev 429)
@@ -92,7 +92,7 @@
<dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-bshd5</artifactId>
- <version>1.0.7</version>
+ <version>1.0.8-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>net.sourceforge.openutils</groupId>
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2007-09-03 08:31:00 UTC (rev 429)
@@ -3,11 +3,20 @@
*/
package it.openutils.hibernate.security.aop;
+import it.openutils.hibernate.security.dataobject.SecurityRule;
+import it.openutils.hibernate.security.services.SecurityRuleManager;
+
+import java.util.ArrayList;
import java.util.List;
+import org.acegisecurity.Authentication;
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.apache.commons.lang.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
+import org.hibernate.Filter;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
@@ -27,23 +36,107 @@
*/
private Logger log = LoggerFactory.getLogger(AOPSecurity.class);
+ private SecurityRuleManager securityRuleManager;
+
+ private List<String> securedDAOs;
+
+ private boolean enabled;
+
/**
* @param pjp The proceeding joinpoint
* @param filter The entity we are going to filter
- * @param additionalCriteria The additional criteria list
+ * @param additionalCriteria The additional criteria list, cannot be null
* @return The execution invocation result
* @throws Throwable Any exception occurring in the invoked method
*/
-// @Around("execution(* findFiltered(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
-// " args(filter, .., additionalCriteria)")
- @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
- " args(filter, .., additionalCriteria)")
- public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
+ @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && "
+ + //
+ " args(filter, .., additionalCriteria)")
+ public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
throws Throwable
{
- log.debug("applying rules for {} with criteria {}", filter.toString(), additionalCriteria);
- additionalCriteria.add(Restrictions.sqlRestriction("INTVALUE = 1"));
+ if (!enabled)
+ {
+ log.debug("DAO security disabled, proceeding.");
+ return pjp.proceed();
+ }
+
+ if (!securedDAOs.contains(pjp.getTarget().getClass().getCanonicalName()))
+ {
+ log.debug("The intercepted DAO {} is not secured, proceeding.", pjp.getTarget().toString());
+ return pjp.proceed();
+ }
+
+ log.debug("applying security rules for {} with criteria {}", filter.toString(), additionalCriteria);
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ if (authentication == null)
+ {
+ throw new SecurityException("Authentication is not valid");
+ }
+ GrantedAuthority[] authorities = authentication.getAuthorities();
+ List<String> roles = new ArrayList<String>();
+ for (int i = 0; i < authorities.length; i++)
+ {
+ roles.add(authorities[i].getAuthority());
+ }
+
+ String entity = filter.getClass().getCanonicalName();
+ List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
+
+ if (rules.isEmpty())
+ {
+ String grantedRoles = StringUtils.EMPTY;
+ for (int i = 0; i < authorities.length; i++)
+ {
+ grantedRoles += authorities[i].getAuthority() + " ";
+ }
+ log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
+ .getContext()
+ .getAuthentication()
+ .getPrincipal()
+ .toString(), grantedRoles);
+
+ throw new SecurityException("Access denied");
+ }
+
+ Filter hibernateFilter = securityRuleManager.getEntityFilterFromRules(entity, rules);
+
+ Criterion sqlCriterion = Restrictions.sqlRestriction(hibernateFilter
+ .getFilterDefinition()
+ .getDefaultFilterCondition());
+
+ log.debug("Adding sql restriction: {}", sqlCriterion.toString());
+ additionalCriteria.add(sqlCriterion);
+
Object result = pjp.proceed();
return result;
}
+
+ /**
+ * Sets the securityRuleManager.
+ * @param securityRuleManager the securityRuleManager to set
+ */
+ public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
+ {
+ this.securityRuleManager = securityRuleManager;
+ }
+
+ /**
+ * Sets the securedDAOs.
+ * @param securedDAOs the securedDAOs to set
+ */
+ public void setSecuredDAOs(List securedDAOs)
+ {
+ this.securedDAOs = securedDAOs;
+ }
+
+
+ /**
+ * Sets the enabled.
+ * @param enabled the enabled to set
+ */
+ public void setEnabled(boolean enabled)
+ {
+ this.enabled = enabled;
+ }
}
Deleted: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-09-03 08:31:00 UTC (rev 429)
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
- */
-package it.openutils.hibernate.security.aop;
-
-import it.openutils.hibernate.security.dataobject.SecurityRule;
-import it.openutils.hibernate.security.services.SecurityRuleManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.acegisecurity.GrantedAuthority;
-import org.acegisecurity.context.SecurityContextHolder;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
-import org.apache.commons.lang.StringUtils;
-import org.hibernate.Filter;
-import org.hibernate.SessionFactory;
-import org.hibernate.criterion.Criterion;
-import org.hibernate.criterion.Restrictions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
- * @author fcarone
- * @version $Id: $
- */
-public class HibernateDAOSecurityInterceptor implements MethodInterceptor
-{
-
- /**
- * Logger.
- */
- private Logger log = LoggerFactory.getLogger(HibernateDAOSecurityInterceptor.class);
-
- private SecurityRuleManager securityRuleManager;
-
- private SessionFactory sessionFactory;
-
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings("unchecked")
- public Object invoke(MethodInvocation invocation) throws Throwable
- {
- log.debug("Applying security rules");
- Object[] arguments = invocation.getArguments();
- Object checkArgument = arguments[arguments.length - 1];
- if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
- {
- return invocation.proceed();
- }
- if (!(checkArgument instanceof List))
- {
- return invocation.proceed();
- }
-
- String entity = StringUtils.EMPTY;
- for (int i = 0; i < arguments.length; i++)
- {
- Object argument = arguments[i];
- if (sessionFactory.getClassMetadata(argument.getClass()) != null)
- {
- entity = argument.getClass().getCanonicalName();
- break;
- }
- }
-
- // the current invocation is not about any session managed entity
- if (StringUtils.isEmpty(entity))
- {
- return invocation.proceed();
- }
-
- if (SecurityContextHolder.getContext().getAuthentication() == null)
- {
- throw new SecurityException("Authentication is not valid");
- }
-
- GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
- List<String> roles = new ArrayList<String>();
- for (int i = 0; i < authorities.length; i++)
- {
- roles.add(authorities[i].getAuthority());
- }
- List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
-
- if (rules.isEmpty())
- {
- String grantedRoles = StringUtils.EMPTY;
- for (int i = 0; i < authorities.length; i++)
- {
- grantedRoles += authorities[i].getAuthority() + " ";
- }
- log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
- .getContext()
- .getAuthentication()
- .getPrincipal()
- .toString(), grantedRoles);
-
- throw new SecurityException("Access denied");
- }
-
- Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
-
- Criterion sqlCriterion = Restrictions.sqlRestriction(filter.getFilterDefinition().getDefaultFilterCondition());
-
- if (StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
- {
- Object argument = arguments[arguments.length - 1];
- ((List) argument).add(sqlCriterion);
- }
-
- Object result = invocation.proceed();
-
- return result;
- }
-
- /**
- * Sets the securityRuleManager.
- * @param securityRuleManager the securityRuleManager to set
- */
- public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
- {
- this.securityRuleManager = securityRuleManager;
- }
-
- /**
- * Sets the sessionFactory.
- * @param sessionFactory the sessionFactory to set
- */
- public void setSessionFactory(SessionFactory sessionFactory)
- {
- this.sessionFactory = sessionFactory;
- }
-
-}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2007-09-03 08:31:00 UTC (rev 429)
@@ -19,6 +19,7 @@
/**
* {@inheritDoc}
+ * Needed to fix Boolean type recognition for HSQLDB
*/
@Override
public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java 2007-09-03 08:31:00 UTC (rev 429)
@@ -20,6 +20,6 @@
protected Class<DummyDataobject> getReferenceClass()
{
return DummyDataobject.class;
+
}
-
}
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-database.xml 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-database.xml 2007-09-03 08:31:00 UTC (rev 429)
@@ -1,10 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<!--
- # ATTENZIONE: queste proprietà sono utilizzate solo per gli unit tests
- # i file per la configurazione del db utilizzati dall'applicazione web sono in
- # src/main/web-app/WEB-INF
--->
+
<beans>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-09-03 08:31:00 UTC (rev 429)
@@ -42,6 +42,7 @@
<prop key="clean*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
- </property>
+ </property>
+ <property name="exposeProxy" value="true" />
</bean>
</beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-09-03 08:31:00 UTC (rev 429)
@@ -2,31 +2,16 @@
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
-
- <aop:aspectj-autoproxy/>
-
- <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity" />
-
- <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+ <aop:aspectj-autoproxy />
+ <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity">
<property name="securityRuleManager" ref="securityRuleManager" />
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
-
-<!--
- <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
- <property name="beanNames">
+ <property name="enabled" value="true" />
+ <property name="securedDAOs">
<list>
- <idref bean="dummyDAO" />
+ <value>it.openutils.hibernate.security.apptest.DummyDaoImpl</value>
</list>
</property>
- <property name="interceptorNames">
- <list>
- <value>securityInterceptor</value>
- </list>
- </property>
</bean>
- -->
-
<bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
<bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
autowire="byType">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fc...@us...> - 2007-11-14 14:16:37
|
Revision: 506
http://openutils.svn.sourceforge.net/openutils/?rev=506&view=rev
Author: fcarone
Date: 2007-11-14 06:16:35 -0800 (Wed, 14 Nov 2007)
Log Message:
-----------
update to latest junit testing package
Modified Paths:
--------------
trunk/openutils-hibernate-security/pom.xml
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml 2007-11-12 15:19:27 UTC (rev 505)
+++ trunk/openutils-hibernate-security/pom.xml 2007-11-14 14:16:35 UTC (rev 506)
@@ -97,7 +97,7 @@
<dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-testing-junit</artifactId>
- <version>1.1.2</version>
+ <version>1.1.3</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-11-12 15:19:27 UTC (rev 505)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-11-14 14:16:35 UTC (rev 506)
@@ -80,7 +80,7 @@
0,
new ArrayList<Criterion>());
Assert.assertNotNull(dummyObjects);
- Assert.assertEquals(1, dummyObjects.size());
+// Assert.assertEquals(1, dummyObjects.size());
dummyObjects = securedObject.findFiltered(filter);
Assert.assertNotNull(dummyObjects);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fc...@us...> - 2008-02-19 15:37:09
|
Revision: 640
http://openutils.svn.sourceforge.net/openutils/?rev=640&view=rev
Author: fcarone
Date: 2008-02-19 07:36:46 -0800 (Tue, 19 Feb 2008)
Log Message:
-----------
SecurityIntegrationTest updated
Modified Paths:
--------------
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java
trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
trunk/openutils-hibernate-security/src/test/resources/log4j.xml
trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml
trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Property Changed:
----------------
trunk/openutils-hibernate-security/
Property changes on: trunk/openutils-hibernate-security
___________________________________________________________________
Name: svn:ignore
- target
.settings
.checkstyle
.classpath
.project
derby.log
+ target
.settings
.checkstyle
.classpath
.project
derby.log
test-output
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,5 +1,17 @@
/*
- * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it
+ * Copyright Openmind http://www.openmindonline.it
+ *
+ * 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.
*/
package it.openutils.hibernate.security.aop;
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java 2008-02-19 15:36:46 UTC (rev 640)
@@ -32,7 +32,6 @@
import org.acegisecurity.vote.AccessDecisionVoter;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.enums.EnumUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.framework.ReflectiveMethodInvocation;
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2008-02-19 15:36:46 UTC (rev 640)
@@ -3,24 +3,31 @@
import it.openutils.hibernate.example.FilterMetadata;
import it.openutils.hibernate.security.apptest.DummyDAO;
import it.openutils.hibernate.security.apptest.DummyDataobject;
-import it.openutils.testing.junit.DbUnitTestCase;
+import it.openutils.hibernate.security.apptest.DummyObjectManager;
+import it.openutils.testing.DbUnitExecution;
+import it.openutils.testing.junit.AbstractDbUnitJunitSpringContextTests;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import org.acegisecurity.AccessDeniedException;
import org.acegisecurity.Authentication;
import org.acegisecurity.context.SecurityContextHolder;
import org.acegisecurity.context.SecurityContextImpl;
import org.acegisecurity.providers.AuthenticationProvider;
import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
-import org.dbunit.database.DatabaseConfig;
-import org.dbunit.database.IDatabaseConnection;
+import org.dbunit.operation.InsertOperation;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.junit.Assert;
import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
+import org.springframework.transaction.annotation.Transactional;
/*
@@ -31,28 +38,27 @@
* @author fcarone
* @version $Id: $
*/
-public class SecurityIntegrationTest extends DbUnitTestCase
+@ContextConfiguration(locations = {"/spring-tests.xml" })
+@DbUnitExecution(datasets = {"/SecurityIntegrationTest-load.xml" }, dataSource = "dataSource", //
+ dataTypeFactory = HsqlDatatypeFactory.class,
+ insertOperation = InsertOperation.class)
+@TestExecutionListeners({TransactionalTestExecutionListener.class })
+@Transactional
+@TransactionConfiguration(transactionManager = "transactionManager")
+public class SecurityIntegrationTest extends AbstractDbUnitJunitSpringContextTests
{
+ @Autowired
private DummyDAO securedObject;
+ @Autowired
+ private AuthenticationProvider authenticationProvider;
+ @Autowired
+ private DummyObjectManager dummyObjectManager;
- /**
- * {@inheritDoc}
- */
- @Override
- protected IDatabaseConnection createConnection() throws SQLException
- {
- IDatabaseConnection connection = super.createConnection();
- DatabaseConfig config = connection.getConfig();
- config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqlDatatypeFactory());
- return connection;
- }
-
private void authenticate(String username, String password)
{
- AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
authentication = authenticationProvider.authenticate(authentication);
SecurityContextImpl sci = new SecurityContextImpl();
@@ -70,7 +76,6 @@
authenticate("UserUno", "password");
// test
- securedObject = (DummyDAO) ctx.getBean("dummyDAO");
DummyDataobject filter = new DummyDataobject();
List<DummyDataobject> dummyObjects = securedObject.findFiltered(
filter,
@@ -80,11 +85,134 @@
0,
new ArrayList<Criterion>());
Assert.assertNotNull(dummyObjects);
+ Assert.assertEquals(1, dummyObjects.size());
dummyObjects = securedObject.findFiltered(filter);
Assert.assertNotNull(dummyObjects);
Assert.assertEquals(1, dummyObjects.size());
+ }
+ /**
+ * @throws Exception Any exception
+ */
+ @Test
+ public void testUpdateOK() throws Exception
+ {
+ authenticate("UserUno", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ ddo.setStringValue("ModifiedValue");
+
+ dummyObjectManager.update(ddo);
}
+ /**
+ * @throws Exception Any exception
+ */
+ @Test(expected = AccessDeniedException.class)
+ public void testUpdateNoGo() throws Exception
+ {
+ authenticate("UserDue", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ ddo.setStringValue("ModifiedValue");
+
+ dummyObjectManager.update(ddo);
+ }
+
+ /**
+ * @throws Exception Any exception
+ */
+ @Test
+ public void testDeleteOk() throws Exception
+ {
+ authenticate("UserUno", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ dummyObjectManager.delete(ddo);
+ }
+
+ /**
+ * @throws Exception Any exception
+ */
+ @Test(expected = AccessDeniedException.class)
+ public void testDeleteNoGo() throws Exception
+ {
+ authenticate("UserDue", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ dummyObjectManager.delete(ddo);
+ }
+
+ /**
+ * @throws Exception Any exception
+ */
+ @Test(expected = AccessDeniedException.class)
+ public void testCreateNoGo() throws Exception
+ {
+ authenticate("UserUno", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ dummyObjectManager.create(ddo);
+ }
+
+ /**
+ * @throws Exception Any exception
+ */
+ @Test
+ public void testCreateOk() throws Exception
+ {
+ authenticate("UserDue", "password");
+ DummyDataobject filter = new DummyDataobject();
+ List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+ Assert.assertNotNull(dummyObjects);
+ DummyDataobject ddo = dummyObjects.get(0);
+
+ dummyObjectManager.create(ddo);
+ }
+
+ /**
+ * Sets the securedObject.
+ * @param securedObject the securedObject to set
+ */
+ public void setSecuredObject(DummyDAO securedObject)
+ {
+ this.securedObject = securedObject;
+ }
+
+
+ /**
+ * Sets the authenticationProvider.
+ * @param authenticationProvider the authenticationProvider to set
+ */
+ public void setAuthenticationProvider(AuthenticationProvider authenticationProvider)
+ {
+ this.authenticationProvider = authenticationProvider;
+ }
+
+
+ /**
+ * Sets the dummyObjectManager.
+ * @param dummyObjectManager the dummyObjectManager to set
+ */
+ public void setDummyObjectManager(DummyObjectManager dummyObjectManager)
+ {
+ this.dummyObjectManager = dummyObjectManager;
+ }
+
}
Modified: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -65,7 +65,7 @@
<value>GRUPPOUNO</value>
</row>
<row>
- <value>UserUno</value>
+ <value>UserDue</value>
<value>GRUPPODUE</value>
</row>
</table>
@@ -101,6 +101,22 @@
<value>1</value>
<value>EQUALS</value>
</row>
+ <row>
+ <value>2</value>
+ <value>RoleDue</value>
+ <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+ <value>intValue</value>
+ <value>1</value>
+ <value>EQUALS</value>
+ </row>
+ <row>
+ <value>3</value>
+ <value>RoleTre</value>
+ <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+ <value>intValue</value>
+ <value>1</value>
+ <value>EQUALS</value>
+ </row>
</table>
<table name="SECRULE_PERMISSION">
<column>ID_SECURITY_RULE</column>
@@ -109,6 +125,22 @@
<value>1</value>
<value>LOAD</value>
</row>
+ <row>
+ <value>1</value>
+ <value>MODIFY</value>
+ </row>
+ <row>
+ <value>2</value>
+ <value>DELETE</value>
+ </row>
+ <row>
+ <value>3</value>
+ <value>LOAD</value>
+ </row>
+ <row>
+ <value>3</value>
+ <value>CREATE</value>
+ </row>
</table>
<table name="DUMMYDATAOBJECT">
<column>ID</column>
Modified: trunk/openutils-hibernate-security/src/test/resources/log4j.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/log4j.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/log4j.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -38,9 +38,12 @@
<category name="it.openutils.dbupdate.DbSetupManagerImpl">
<priority value="INFO" />
</category>
- <category name="it.openutils.hibernate.security.aop">
+ <category name="it.openutils.hibernate.security">
<priority value="DEBUG" />
</category>
+ <category name="org.acegisecurity">
+ <priority value="DEBUG" />
+ </category>
<root>
<priority value="debug" />
<appender-ref ref="test-appender" />
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean id="userDAO" parent="txProxyTemplate">
<property name="target">
<bean class="it.openutils.usermanagement.dao.UserDAOImpl">
@@ -9,18 +9,19 @@
</bean>
</property>
</bean>
- <bean id="securityRuleDAO" parent="txProxyTemplate">
- <property name="target">
- <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- </property>
+ <bean id="securityRuleDAO" parent="txProxyTemplate">
+ <property name="target">
+ <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+ </property>
</bean>
<bean id="dummyDAO" parent="txProxyTemplate">
<property name="target">
<bean class="it.openutils.hibernate.security.apptest.DummyDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
+ <property name="aopenabled" value="true" />
</bean>
</property>
- </bean>
+ </bean>
</beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-database.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-database.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:database.properties</value>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,17 +1,49 @@
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
- <bean id="securityRuleManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
- autowire="byType">
- <property name="transactionManager">
- <ref bean="transactionManager" />
- </property>
- <property name="transactionAttributes">
- <props>
- <prop key="*">PROPAGATION_REQUIRED</prop>
- </props>
- </property>
- <property name="target">
- <bean class="it.openutils.hibernate.security.services.impl.SecurityRuleManagerImpl" autowire="byType"></bean>
- </property>
- </bean>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+ <bean id="securityRuleManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+ <property name="transactionManager">
+ <ref bean="transactionManager" />
+ </property>
+ <property name="transactionAttributes">
+ <props>
+ <prop key="*">PROPAGATION_REQUIRED</prop>
+ </props>
+ </property>
+ <property name="target">
+ <bean class="it.openutils.hibernate.security.services.impl.SecurityRuleManagerImpl" autowire="byType"></bean>
+ </property>
+ </bean>
+ <bean id="dummyObjectManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+ <property name="transactionManager">
+ <ref bean="transactionManager" />
+ </property>
+ <property name="transactionAttributes">
+ <props>
+ <prop key="*">PROPAGATION_REQUIRED</prop>
+ </props>
+ </property>
+ <property name="target">
+ <bean class="it.openutils.hibernate.security.apptest.DummyObjectManagerImpl">
+ <property name="dummyDAO" ref="dummyDAO" />
+ </bean>
+ </property>
+ </bean>
+ <bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+ <property name="transactionManager">
+ <ref bean="transactionManager" />
+ </property>
+ <property name="transactionAttributes">
+ <props>
+ <prop key="*">PROPAGATION_REQUIRED</prop>
+ </props>
+ </property>
+ <property name="target">
+ <bean class="it.openutils.usermanagement.manager.UserManagerImpl">
+ <property name="passwordEncoder" ref="passwordEncoder" />
+ <property name="userDAO" ref="userDAO" />
+ </bean>
+ </property>
+ </bean>
</beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,8 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+ xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
<aop:aspectj-autoproxy />
+
<bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity">
<property name="securityRuleManager" ref="securityRuleManager" />
<property name="enabled" value="true" />
@@ -12,26 +15,60 @@
</list>
</property>
</bean>
+
<bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+
<bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
autowire="byType">
<property name="userDao" ref="userDAO" />
</bean>
- <bean id="authenticationProvider" class="org.springframework.aop.framework.ProxyFactoryBean" lazy-init="true">
- <property name="targetName" value="authenticationProviderDB" />
+
+ <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
+ lazy-init="true">
+ <property name="userDetailsService" ref="userDetailsService" />
+ <property name="passwordEncoder" ref="passwordEncoder" />
</bean>
+
+ <bean id="authenticationManager" class="org.acegisecurity.MockAuthenticationManager" />
+
<bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />
- <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
+
+ <bean id="securityRuleVoter" class="it.openutils.hibernate.security.filter.SecurityRuleAccessDecisionVoter">
+ <property name="securityRuleManager" ref="securityRuleManager" />
+ </bean>
+
+ <bean id="accessDecisionManager" class="org.acegisecurity.vote.UnanimousBased">
<property name="allowIfAllAbstainDecisions" value="false" />
<property name="decisionVoters">
<list>
<ref bean="roleVoter" />
+ <ref bean="securityRuleVoter" />
</list>
</property>
</bean>
- <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
- lazy-init="true">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder" ref="passwordEncoder" />
+
+ <bean id="securityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
+ <property name="authenticationManager" ref="authenticationManager" />
+ <property name="accessDecisionManager" ref="accessDecisionManager" />
+ <property name="objectDefinitionSource">
+ <value>
+ it.openutils.hibernate.security.apptest.DummyObjectManager.update=MODIFY
+ it.openutils.hibernate.security.apptest.DummyObjectManager.create=CREATE
+ it.openutils.hibernate.security.apptest.DummyObjectManager.delete=DELETE
+ </value>
+ </property>
</bean>
+
+ <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+ <property name="beanNames">
+ <list>
+ <idref bean="dummyObjectManager" />
+ </list>
+ </property>
+ <property name="interceptorNames">
+ <list>
+ <value>securityInterceptor</value>
+ </list>
+ </property>
+ </bean>
</beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2008-02-19 15:36:46 UTC (rev 640)
@@ -1,6 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+
<import resource="classpath:spring-database.xml" />
<import resource="classpath:spring-hibernate.xml" />
<import resource="classpath:spring-dao.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|