Skip to content

Commit da3f6cf

Browse files
committed
Use DefaultAuthorizationManagerFactory
Signed-off-by: Steve Riesenberg <[email protected]>
1 parent cca54f7 commit da3f6cf

File tree

2 files changed

+8
-51
lines changed

2 files changed

+8
-51
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/configurers/AuthorizeHttpRequestsConfigurer.java

Lines changed: 8 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import java.util.List;
2020
import java.util.function.Function;
21-
import java.util.function.Supplier;
2221

2322
import jakarta.servlet.http.HttpServletRequest;
2423

@@ -27,12 +26,12 @@
2726
import org.springframework.core.ResolvableType;
2827
import org.springframework.security.access.hierarchicalroles.NullRoleHierarchy;
2928
import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
30-
import org.springframework.security.authorization.AuthorityAuthorizationManager;
3129
import org.springframework.security.authorization.AuthorizationDecision;
3230
import org.springframework.security.authorization.AuthorizationEventPublisher;
3331
import org.springframework.security.authorization.AuthorizationManager;
3432
import org.springframework.security.authorization.AuthorizationManagerFactory;
3533
import org.springframework.security.authorization.AuthorizationManagers;
34+
import org.springframework.security.authorization.DefaultAuthorizationManagerFactory;
3635
import org.springframework.security.authorization.SpringAuthorizationEventPublisher;
3736
import org.springframework.security.config.ObjectPostProcessor;
3837
import org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry;
@@ -45,7 +44,6 @@
4544
import org.springframework.security.web.util.matcher.RequestMatcher;
4645
import org.springframework.security.web.util.matcher.RequestMatcherEntry;
4746
import org.springframework.util.Assert;
48-
import org.springframework.util.function.SingletonSupplier;
4947

5048
/**
5149
* Adds a URL based authorization using {@link AuthorizationManager}.
@@ -94,13 +92,17 @@ private AuthorizationManagerFactory<RequestAuthorizationContext> getAuthorizatio
9492
.getBeanProvider(authorizationManagerFactoryType);
9593

9694
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);
9997
GrantedAuthorityDefaults grantedAuthorityDefaults = context.getBeanProvider(GrantedAuthorityDefaults.class)
10098
.getIfAvailable();
10199
String rolePrefix = (grantedAuthorityDefaults != null) ? grantedAuthorityDefaults.getRolePrefix() : "ROLE_";
102100

103-
return new RequestAuthorizationContextAuthorizationManagerFactory(roleHierarchy, rolePrefix);
101+
DefaultAuthorizationManagerFactory<RequestAuthorizationContext> authorizationManagerFactory = new DefaultAuthorizationManagerFactory<>();
102+
authorizationManagerFactory.setRoleHierarchy(roleHierarchy);
103+
authorizationManagerFactory.setRolePrefix(rolePrefix);
104+
105+
return authorizationManagerFactory;
104106
});
105107
}
106108

@@ -415,45 +417,4 @@ public AuthorizationManagerRequestMatcherRegistry equalTo(Function<Authenticatio
415417

416418
}
417419

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-
459420
}

core/src/test/java/org/springframework/security/authorization/AuthorizationManagerFactoryTests.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,4 @@ public void anonymousReturnsAuthenticatedAuthorizationManagerByDefault() {
9797
assertThat(authorizationManager).isInstanceOf(AuthenticatedAuthorizationManager.class);
9898
}
9999

100-
private static final class DefaultAuthorizationManagerFactory<T> implements AuthorizationManagerFactory<T> {
101-
102-
}
103-
104100
}

0 commit comments

Comments
 (0)