|
46 | 46 | import org.springframework.security.access.annotation.Jsr250BusinessServiceImpl;
|
47 | 47 | import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
|
48 | 48 | import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
|
| 49 | +import org.springframework.security.access.hierarchicalroles.RoleHierarchy; |
| 50 | +import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl; |
49 | 51 | import org.springframework.security.authorization.AuthorizationDecision;
|
50 | 52 | import org.springframework.security.authorization.AuthorizationEventPublisher;
|
51 | 53 | import org.springframework.security.authorization.AuthorizationManager;
|
@@ -447,6 +449,24 @@ public void configureWhenBeanOverridingDisallowedThenWorks() {
|
447 | 449 | .autowire();
|
448 | 450 | }
|
449 | 451 |
|
| 452 | + @WithMockUser(roles = "ADMIN") |
| 453 | + @Test |
| 454 | + public void methodSecurityAdminWhenRoleHierarchyBeanAvailableThenUses() { |
| 455 | + this.spring.register(RoleHierarchyConfig.class, MethodSecurityServiceConfig.class).autowire(); |
| 456 | + this.methodSecurityService.preAuthorizeAdmin(); |
| 457 | + this.methodSecurityService.secured(); |
| 458 | + this.methodSecurityService.jsr250RolesAllowed(); |
| 459 | + } |
| 460 | + |
| 461 | + @WithMockUser |
| 462 | + @Test |
| 463 | + public void methodSecurityUserWhenRoleHierarchyBeanAvailableThenUses() { |
| 464 | + this.spring.register(RoleHierarchyConfig.class, MethodSecurityServiceConfig.class).autowire(); |
| 465 | + this.methodSecurityService.preAuthorizeUser(); |
| 466 | + this.methodSecurityService.securedUser(); |
| 467 | + this.methodSecurityService.jsr250RolesAllowed(); |
| 468 | + } |
| 469 | + |
450 | 470 | private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
|
451 | 471 | return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
|
452 | 472 | }
|
@@ -627,4 +647,17 @@ Authz authz() {
|
627 | 647 |
|
628 | 648 | }
|
629 | 649 |
|
| 650 | + @Configuration |
| 651 | + @EnableMethodSecurity(jsr250Enabled = true, securedEnabled = true) |
| 652 | + static class RoleHierarchyConfig { |
| 653 | + |
| 654 | + @Bean |
| 655 | + RoleHierarchy roleHierarchy() { |
| 656 | + RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl(); |
| 657 | + roleHierarchyImpl.setHierarchy("ADMIN > USER"); |
| 658 | + return roleHierarchyImpl; |
| 659 | + } |
| 660 | + |
| 661 | + } |
| 662 | + |
630 | 663 | }
|
0 commit comments