SEC-999: Refactored expression security classes for better separation of concerns and of method vs web authorization expressions.
This commit is contained in:
+2
-2
@@ -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;
|
||||
|
||||
+4
-1
@@ -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;
|
||||
|
||||
|
||||
+4
-4
@@ -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
-1
@@ -1,4 +1,4 @@
|
||||
package org.springframework.security.expression.support;
|
||||
package org.springframework.security.expression.method;
|
||||
|
||||
public class SecurityRules {
|
||||
public static boolean disallow() {
|
||||
+7
-7
@@ -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);
|
||||
Reference in New Issue
Block a user