Skip to content

Commit 31f1604

Browse files
committed
Merge branch '6.0.x'
Closes gh-13199
2 parents 0e3ee89 + 7efa275 commit 31f1604

File tree

5 files changed

+72
-14
lines changed

5 files changed

+72
-14
lines changed

config/src/main/java/org/springframework/security/config/annotation/method/configuration/Jsr250MethodSecurityConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,9 +17,9 @@
1717
package org.springframework.security.config.annotation.method.configuration;
1818

1919
import io.micrometer.observation.ObservationRegistry;
20+
import org.aopalliance.intercept.MethodInterceptor;
2021
import org.aopalliance.intercept.MethodInvocation;
2122

22-
import org.springframework.aop.Advisor;
2323
import org.springframework.beans.factory.ObjectProvider;
2424
import org.springframework.beans.factory.config.BeanDefinition;
2525
import org.springframework.context.annotation.Bean;
@@ -46,7 +46,8 @@ final class Jsr250MethodSecurityConfiguration {
4646

4747
@Bean
4848
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
49-
static Advisor jsr250AuthorizationMethodInterceptor(ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
49+
static MethodInterceptor jsr250AuthorizationMethodInterceptor(
50+
ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
5051
ObjectProvider<SecurityContextHolderStrategy> strategyProvider,
5152
ObjectProvider<ObservationRegistry> registryProvider) {
5253
Jsr250AuthorizationManager jsr250 = new Jsr250AuthorizationManager();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright 2002-2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.security.config.annotation.method.configuration;
18+
19+
import org.springframework.aop.Advisor;
20+
import org.springframework.beans.factory.config.BeanDefinition;
21+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
22+
import org.springframework.beans.factory.support.RootBeanDefinition;
23+
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
24+
import org.springframework.core.type.AnnotationMetadata;
25+
26+
class MethodSecurityAdvisorRegistrar implements ImportBeanDefinitionRegistrar {
27+
28+
@Override
29+
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
30+
registerAsAdvisor("preFilterAuthorization", registry);
31+
registerAsAdvisor("preAuthorizeAuthorization", registry);
32+
registerAsAdvisor("postFilterAuthorization", registry);
33+
registerAsAdvisor("postAuthorizeAuthorization", registry);
34+
registerAsAdvisor("securedAuthorization", registry);
35+
registerAsAdvisor("jsr250Authorization", registry);
36+
}
37+
38+
private void registerAsAdvisor(String prefix, BeanDefinitionRegistry registry) {
39+
String interceptorName = prefix + "MethodInterceptor";
40+
if (!registry.containsBeanDefinition(interceptorName)) {
41+
return;
42+
}
43+
BeanDefinition definition = registry.getBeanDefinition(interceptorName);
44+
if (!(definition instanceof RootBeanDefinition)) {
45+
return;
46+
}
47+
RootBeanDefinition advisor = new RootBeanDefinition((RootBeanDefinition) definition);
48+
advisor.setTargetType(Advisor.class);
49+
registry.registerBeanDefinition(prefix + "Advisor", advisor);
50+
}
51+
52+
}

config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecuritySelector.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -60,7 +60,8 @@ public String[] selectImports(@NonNull AnnotationMetadata importMetadata) {
6060

6161
private static final class AutoProxyRegistrarSelector extends AdviceModeImportSelector<EnableMethodSecurity> {
6262

63-
private static final String[] IMPORTS = new String[] { AutoProxyRegistrar.class.getName() };
63+
private static final String[] IMPORTS = new String[] { AutoProxyRegistrar.class.getName(),
64+
MethodSecurityAdvisorRegistrar.class.getName() };
6465

6566
private static final String[] ASPECTJ_IMPORTS = new String[] {
6667
MethodSecurityAspectJAutoProxyRegistrar.class.getName() };

config/src/main/java/org/springframework/security/config/annotation/method/configuration/PrePostMethodSecurityConfiguration.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@
1717
package org.springframework.security.config.annotation.method.configuration;
1818

1919
import io.micrometer.observation.ObservationRegistry;
20+
import org.aopalliance.intercept.MethodInterceptor;
2021

21-
import org.springframework.aop.Advisor;
2222
import org.springframework.beans.factory.ObjectProvider;
2323
import org.springframework.beans.factory.config.BeanDefinition;
2424
import org.springframework.context.ApplicationContext;
@@ -52,7 +52,8 @@ final class PrePostMethodSecurityConfiguration {
5252

5353
@Bean
5454
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
55-
static Advisor preFilterAuthorizationMethodInterceptor(ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
55+
static MethodInterceptor preFilterAuthorizationMethodInterceptor(
56+
ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
5657
ObjectProvider<MethodSecurityExpressionHandler> expressionHandlerProvider,
5758
ObjectProvider<SecurityContextHolderStrategy> strategyProvider, ApplicationContext context) {
5859
PreFilterAuthorizationMethodInterceptor preFilter = new PreFilterAuthorizationMethodInterceptor();
@@ -64,7 +65,8 @@ static Advisor preFilterAuthorizationMethodInterceptor(ObjectProvider<GrantedAut
6465

6566
@Bean
6667
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
67-
static Advisor preAuthorizeAuthorizationMethodInterceptor(ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
68+
static MethodInterceptor preAuthorizeAuthorizationMethodInterceptor(
69+
ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
6870
ObjectProvider<MethodSecurityExpressionHandler> expressionHandlerProvider,
6971
ObjectProvider<SecurityContextHolderStrategy> strategyProvider,
7072
ObjectProvider<AuthorizationEventPublisher> eventPublisherProvider,
@@ -81,7 +83,7 @@ static Advisor preAuthorizeAuthorizationMethodInterceptor(ObjectProvider<Granted
8183

8284
@Bean
8385
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
84-
static Advisor postAuthorizeAuthorizationMethodInterceptor(
86+
static MethodInterceptor postAuthorizeAuthorizationMethodInterceptor(
8587
ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
8688
ObjectProvider<MethodSecurityExpressionHandler> expressionHandlerProvider,
8789
ObjectProvider<SecurityContextHolderStrategy> strategyProvider,
@@ -99,7 +101,8 @@ static Advisor postAuthorizeAuthorizationMethodInterceptor(
99101

100102
@Bean
101103
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
102-
static Advisor postFilterAuthorizationMethodInterceptor(ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
104+
static MethodInterceptor postFilterAuthorizationMethodInterceptor(
105+
ObjectProvider<GrantedAuthorityDefaults> defaultsProvider,
103106
ObjectProvider<MethodSecurityExpressionHandler> expressionHandlerProvider,
104107
ObjectProvider<SecurityContextHolderStrategy> strategyProvider, ApplicationContext context) {
105108
PostFilterAuthorizationMethodInterceptor postFilter = new PostFilterAuthorizationMethodInterceptor();

config/src/main/java/org/springframework/security/config/annotation/method/configuration/SecuredMethodSecurityConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,9 +17,9 @@
1717
package org.springframework.security.config.annotation.method.configuration;
1818

1919
import io.micrometer.observation.ObservationRegistry;
20+
import org.aopalliance.intercept.MethodInterceptor;
2021
import org.aopalliance.intercept.MethodInvocation;
2122

22-
import org.springframework.aop.Advisor;
2323
import org.springframework.beans.factory.ObjectProvider;
2424
import org.springframework.beans.factory.config.BeanDefinition;
2525
import org.springframework.context.annotation.Bean;
@@ -46,7 +46,8 @@ final class SecuredMethodSecurityConfiguration {
4646

4747
@Bean
4848
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
49-
static Advisor securedAuthorizationMethodInterceptor(ObjectProvider<SecurityContextHolderStrategy> strategyProvider,
49+
static MethodInterceptor securedAuthorizationMethodInterceptor(
50+
ObjectProvider<SecurityContextHolderStrategy> strategyProvider,
5051
ObjectProvider<ObservationRegistry> registryProvider) {
5152
SecuredAuthorizationManager secured = new SecuredAuthorizationManager();
5253
SecurityContextHolderStrategy strategy = strategyProvider

0 commit comments

Comments
 (0)