|
18 | 18 |
|
19 | 19 | import java.util.List;
|
20 | 20 | import java.util.function.Function;
|
21 |
| -import java.util.function.Supplier; |
22 | 21 |
|
23 | 22 | import jakarta.servlet.http.HttpServletRequest;
|
24 | 23 |
|
|
27 | 26 | import org.springframework.core.ResolvableType;
|
28 | 27 | import org.springframework.security.access.hierarchicalroles.NullRoleHierarchy;
|
29 | 28 | import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
|
30 |
| -import org.springframework.security.authorization.AuthorityAuthorizationManager; |
31 | 29 | import org.springframework.security.authorization.AuthorizationDecision;
|
32 | 30 | import org.springframework.security.authorization.AuthorizationEventPublisher;
|
33 | 31 | import org.springframework.security.authorization.AuthorizationManager;
|
34 | 32 | import org.springframework.security.authorization.AuthorizationManagerFactory;
|
35 | 33 | import org.springframework.security.authorization.AuthorizationManagers;
|
| 34 | +import org.springframework.security.authorization.DefaultAuthorizationManagerFactory; |
36 | 35 | import org.springframework.security.authorization.SpringAuthorizationEventPublisher;
|
37 | 36 | import org.springframework.security.config.ObjectPostProcessor;
|
38 | 37 | import org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry;
|
|
45 | 44 | import org.springframework.security.web.util.matcher.RequestMatcher;
|
46 | 45 | import org.springframework.security.web.util.matcher.RequestMatcherEntry;
|
47 | 46 | import org.springframework.util.Assert;
|
48 |
| -import org.springframework.util.function.SingletonSupplier; |
49 | 47 |
|
50 | 48 | /**
|
51 | 49 | * Adds a URL based authorization using {@link AuthorizationManager}.
|
@@ -94,13 +92,17 @@ private AuthorizationManagerFactory<RequestAuthorizationContext> getAuthorizatio
|
94 | 92 | .getBeanProvider(authorizationManagerFactoryType);
|
95 | 93 |
|
96 | 94 | return authorizationManagerFactoryProvider.getIfAvailable(() -> {
|
97 |
| - Supplier<RoleHierarchy> roleHierarchy = SingletonSupplier |
98 |
| - .of(() -> context.getBeanProvider(RoleHierarchy.class).getIfAvailable(NullRoleHierarchy::new)); |
| 95 | + RoleHierarchy roleHierarchy = context.getBeanProvider(RoleHierarchy.class) |
| 96 | + .getIfAvailable(NullRoleHierarchy::new); |
99 | 97 | GrantedAuthorityDefaults grantedAuthorityDefaults = context.getBeanProvider(GrantedAuthorityDefaults.class)
|
100 | 98 | .getIfAvailable();
|
101 | 99 | String rolePrefix = (grantedAuthorityDefaults != null) ? grantedAuthorityDefaults.getRolePrefix() : "ROLE_";
|
102 | 100 |
|
103 |
| - return new RequestAuthorizationContextAuthorizationManagerFactory(roleHierarchy, rolePrefix); |
| 101 | + DefaultAuthorizationManagerFactory<RequestAuthorizationContext> authorizationManagerFactory = new DefaultAuthorizationManagerFactory<>(); |
| 102 | + authorizationManagerFactory.setRoleHierarchy(roleHierarchy); |
| 103 | + authorizationManagerFactory.setRolePrefix(rolePrefix); |
| 104 | + |
| 105 | + return authorizationManagerFactory; |
104 | 106 | });
|
105 | 107 | }
|
106 | 108 |
|
@@ -415,45 +417,4 @@ public AuthorizationManagerRequestMatcherRegistry equalTo(Function<Authenticatio
|
415 | 417 |
|
416 | 418 | }
|
417 | 419 |
|
418 |
| - static final class RequestAuthorizationContextAuthorizationManagerFactory |
419 |
| - implements AuthorizationManagerFactory<RequestAuthorizationContext> { |
420 |
| - |
421 |
| - private final Supplier<RoleHierarchy> roleHierarchy; |
422 |
| - |
423 |
| - private final String rolePrefix; |
424 |
| - |
425 |
| - RequestAuthorizationContextAuthorizationManagerFactory(Supplier<RoleHierarchy> roleHierarchy, |
426 |
| - String rolePrefix) { |
427 |
| - this.roleHierarchy = roleHierarchy; |
428 |
| - this.rolePrefix = rolePrefix; |
429 |
| - } |
430 |
| - |
431 |
| - @Override |
432 |
| - public AuthorizationManager<RequestAuthorizationContext> hasRole(String role) { |
433 |
| - return withRoleHierarchy(AuthorityAuthorizationManager.hasAnyRole(this.rolePrefix, new String[] { role })); |
434 |
| - } |
435 |
| - |
436 |
| - @Override |
437 |
| - public AuthorizationManager<RequestAuthorizationContext> hasAnyRole(String... roles) { |
438 |
| - return withRoleHierarchy(AuthorityAuthorizationManager.hasAnyRole(this.rolePrefix, roles)); |
439 |
| - } |
440 |
| - |
441 |
| - @Override |
442 |
| - public AuthorizationManager<RequestAuthorizationContext> hasAuthority(String authority) { |
443 |
| - return withRoleHierarchy(AuthorityAuthorizationManager.hasAuthority(authority)); |
444 |
| - } |
445 |
| - |
446 |
| - @Override |
447 |
| - public AuthorizationManager<RequestAuthorizationContext> hasAnyAuthority(String... authorities) { |
448 |
| - return withRoleHierarchy(AuthorityAuthorizationManager.hasAnyAuthority(authorities)); |
449 |
| - } |
450 |
| - |
451 |
| - private AuthorityAuthorizationManager<RequestAuthorizationContext> withRoleHierarchy( |
452 |
| - AuthorityAuthorizationManager<RequestAuthorizationContext> manager) { |
453 |
| - manager.setRoleHierarchy(this.roleHierarchy.get()); |
454 |
| - return manager; |
455 |
| - } |
456 |
| - |
457 |
| - } |
458 |
| - |
459 | 420 | }
|
0 commit comments