diff --git a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
index 4717a4c969..416bba35a0 100644
--- a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
@@ -269,6 +269,20 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
assertEquals("bob", result[0]);
}
+ // SEC-1392
+ @Test
+ public void customPermissionEvaluatorIsSupported() throws Exception {
+ setContext(
+ "" +
+ " " +
+ "" +
+ "" +
+ " " +
+ "" +
+ "" +
+ AUTH_PROVIDER_XML);
+ }
+
@Test
public void runAsManagerIsSetCorrectly() throws Exception {
StaticApplicationContext parent = new StaticApplicationContext();
diff --git a/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java b/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java
new file mode 100644
index 0000000000..541d926a59
--- /dev/null
+++ b/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java
@@ -0,0 +1,19 @@
+package org.springframework.security.config.method;
+
+import java.io.Serializable;
+
+import org.springframework.security.access.PermissionEvaluator;
+import org.springframework.security.core.Authentication;
+
+public class TestPermissionEvaluator implements PermissionEvaluator {
+
+ public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) {
+ return false;
+ }
+
+ public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType,
+ Object permission) {
+ return false;
+ }
+
+}
diff --git a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java
index 50e4d6ed45..28d6044bc0 100644
--- a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java
+++ b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java
@@ -2,6 +2,7 @@ package org.springframework.security.access;
import java.io.Serializable;
+import org.springframework.aop.framework.AopInfrastructureBean;
import org.springframework.security.core.Authentication;
/**
@@ -12,7 +13,7 @@ import org.springframework.security.core.Authentication;
* @author Luke Taylor
* @since 3.0
*/
-public interface PermissionEvaluator {
+public interface PermissionEvaluator extends AopInfrastructureBean {
/**
*
* @param authentication represents the user in question. Should not be null.
diff --git a/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java b/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java
index 588e43c2e7..a58f45fbc5 100644
--- a/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java
+++ b/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java
@@ -1,6 +1,7 @@
package org.springframework.security.access.expression.method;
import org.aopalliance.intercept.MethodInvocation;
+import org.springframework.aop.framework.AopInfrastructureBean;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
@@ -13,7 +14,7 @@ import org.springframework.security.core.Authentication;
* @author Luke Taylor
* @since 3.0
*/
-public interface MethodSecurityExpressionHandler {
+public interface MethodSecurityExpressionHandler extends AopInfrastructureBean {
/**
* @return an expression parser for the expressions used by the implementation.
*/