1
0
mirror of synced 2026-08-05 17:57:15 +00:00

SEC-999: Refactored expression security classes for better separation of concerns and of method vs web authorization expressions.

This commit is contained in:
Luke Taylor
2008-11-12 04:07:56 +00:00
parent 790c3e6f79
commit 3acd515c6c
26 changed files with 261 additions and 148 deletions
@@ -15,8 +15,8 @@ import org.springframework.security.AuthenticationCredentialsNotFoundException;
import org.springframework.security.afterinvocation.AfterInvocationProviderManager;
import org.springframework.security.annotation.BusinessService;
import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.expression.support.MethodExpressionAfterInvocationProvider;
import org.springframework.security.expression.support.MethodExpressionVoter;
import org.springframework.security.expression.method.MethodExpressionAfterInvocationProvider;
import org.springframework.security.expression.method.MethodExpressionVoter;
import org.springframework.security.providers.TestingAuthenticationToken;
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import org.springframework.security.userdetails.UserDetailsService;
@@ -1,4 +1,4 @@
package org.springframework.security.expression.support;
package org.springframework.security.expression.method;
import static org.junit.Assert.*;
@@ -11,6 +11,9 @@ import org.springframework.security.expression.annotation.PostAuthorize;
import org.springframework.security.expression.annotation.PostFilter;
import org.springframework.security.expression.annotation.PreAuthorize;
import org.springframework.security.expression.annotation.PreFilter;
import org.springframework.security.expression.method.ExpressionAnnotationMethodDefinitionSource;
import org.springframework.security.expression.method.PostInvocationExpressionAttribute;
import org.springframework.security.expression.method.PreInvocationExpressionAttribute;
import org.springframework.security.intercept.method.MockMethodInvocation;
@@ -1,4 +1,4 @@
package org.springframework.security.expression.support;
package org.springframework.security.expression.method;
import static org.junit.Assert.assertEquals;
@@ -11,6 +11,8 @@ import java.util.List;
import org.aopalliance.intercept.MethodInvocation;
import org.junit.Test;
import org.springframework.security.ConfigAttribute;
import org.springframework.security.expression.method.MethodExpressionVoter;
import org.springframework.security.expression.method.PreInvocationExpressionAttribute;
import org.springframework.security.providers.TestingAuthenticationToken;
import org.springframework.security.util.SimpleMethodInvocation;
import org.springframework.security.vote.AccessDecisionVoter;
@@ -83,7 +85,7 @@ public class MethodExpressionVoterTests {
public void ruleDefinedInAClassMethodIsApplied() throws Exception {
MethodInvocation mi = new SimpleMethodInvocation(new TargetImpl(), methodTakingAString(), "joe");
assertEquals(AccessDecisionVoter.ACCESS_GRANTED, am.vote(joe, mi,
createAttributes(new PreInvocationExpressionAttribute(null, null, "new org.springframework.security.expression.support.SecurityRules().isJoe(#argument)"))));
createAttributes(new PreInvocationExpressionAttribute(null, null, "new org.springframework.security.expression.method.SecurityRules().isJoe(#argument)"))));
}
private List<ConfigAttribute> createAttributes(ConfigAttribute... attributes) {
@@ -132,6 +134,4 @@ public class MethodExpressionVoterTests {
public Collection methodTakingACollection(Collection collection) {return collection;}
}
}
@@ -1,4 +1,4 @@
package org.springframework.security.expression.support;
package org.springframework.security.expression.method;
public class SecurityRules {
public static boolean disallow() {
@@ -1,4 +1,4 @@
package org.springframework.security.expression;
package org.springframework.security.expression.support;
import static org.junit.Assert.*;
@@ -11,18 +11,18 @@ import org.springframework.expression.spel.SpelExpressionParser;
import org.springframework.expression.spel.standard.StandardEvaluationContext;
import org.springframework.security.Authentication;
import org.springframework.security.AuthenticationTrustResolver;
import org.springframework.security.expression.SecurityExpressionRoot;
import org.springframework.security.expression.ExpressionUtils;
import org.springframework.security.expression.PermissionEvaluator;
/**
* Sandbox class for checking feasibility of different security-related expressions.
* Tests for {@link MethodSecurityExpressionRoot}
*
* @author Luke Taylor
* @version $Id$
*/
public class SecurityExpressionRootTests {
public class MethodSecurityExpressionRootTests {
SpelExpressionParser parser = new SpelExpressionParser();
SecurityExpressionRoot root;
MethodSecurityExpressionRoot root;
StandardEvaluationContext ctx;
Mockery jmock = new Mockery();
private AuthenticationTrustResolver trustResolver;
@@ -32,7 +32,7 @@ public class SecurityExpressionRootTests {
@Before
public void createContext() {
user = jmock.mock(Authentication.class);
root = new SecurityExpressionRoot(user);
root = new MethodSecurityExpressionRoot(user);
ctx = new StandardEvaluationContext();
ctx.setRootObject(root);
trustResolver = jmock.mock(AuthenticationTrustResolver.class);