@@ -2,15 +2,18 @@
 
 import jakarta.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
+import java.util.stream.Collectors;
 import nextstep.app.domain.Member;
 import nextstep.app.domain.MemberRepository;
+import nextstep.security.access.NullRoleHierarchy;
+import nextstep.security.access.RoleHierarchy;
+import nextstep.security.access.RoleHierarchyImpl;
 import nextstep.security.authentication.AuthenticationException;
 import nextstep.security.authentication.BasicAuthenticationFilter;
 import nextstep.security.authentication.UsernamePasswordAuthenticationFilter;
 import nextstep.security.authorization.AuthorizationFilter;
 import nextstep.security.authorization.AuthorizationManager;
 import nextstep.security.authorization.SecuredMethodInterceptor;
-import nextstep.security.authorization.method.SecuredAuthorizationManager;
 import nextstep.security.authorization.web.AuthenticatedAuthorizationManager;
 import nextstep.security.authorization.web.AuthorityAuthorizationManager;
 import nextstep.security.authorization.web.DenyAllAuthorizationManager;
@@ -20,13 +23,14 @@
 import nextstep.security.config.FilterChainProxy;
 import nextstep.security.config.SecurityFilterChain;
 import nextstep.security.context.SecurityContextHolderFilter;
+import nextstep.security.core.GrantedAuthority;
+import nextstep.security.core.SimpleGrantedAuthority;
 import nextstep.security.userdetails.UserDetails;
 import nextstep.security.userdetails.UserDetailsService;
 import nextstep.security.util.AnyRequestMatcher;
 import nextstep.security.util.MvcRequestMatcher;
 import nextstep.security.util.RequestMatcherEntry;
 import nextstep.security.authorization.web.PermitAllAuthorizationManager;
-import org.aopalliance.intercept.MethodInvocation;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
@@ -57,19 +61,22 @@ public FilterChainProxy filterChainProxy(List<SecurityFilterChain> securityFilte
 
     @Bean
     public SecuredMethodInterceptor securedMethodInterceptor() {
-        return new SecuredMethodInterceptor(securedAuthorizationManager());
+        return new SecuredMethodInterceptor(new AuthorityAuthorizationManager<>(roleHierarchy()));
     }
 
     @Bean
-    public AuthorizationManager<MethodInvocation> securedAuthorizationManager() {
-         return new SecuredAuthorizationManager();
+    public RoleHierarchy roleHierarchy() {
+        return RoleHierarchyImpl.with()
+                .role("ADMIN").implies("USER")
+                .role("USER").implies("GUEST")
+                .build();
     }
 
     @Bean
     public AuthorizationManager<HttpServletRequest> requestAuthorizationManager() {
         List<RequestMatcherEntry<AuthorizationManager>> mappings = new ArrayList<>();
         mappings.add(new RequestMatcherEntry<>(new MvcRequestMatcher(HttpMethod.GET, "/members"),
-                new AuthorityAuthorizationManager<HttpServletRequest>(Set.of("ADMIN"))));
+                new AuthorityAuthorizationManager(new NullRoleHierarchy(), Set.of("ADMIN"))));
         mappings.add(new RequestMatcherEntry<>(new MvcRequestMatcher(HttpMethod.GET, "/members/me"),
                 new AuthenticatedAuthorizationManager()));
         mappings.add(new RequestMatcherEntry<>(new MvcRequestMatcher(HttpMethod.GET, "/search"),
@@ -108,8 +115,8 @@ public String getPassword() {
                 }
 
                 @Override
-                public Set<String> getAuthorities() {
-                    return member.getRoles();
+                public Set<GrantedAuthority> getAuthorities() {
+                    return member.getRoles().stream().map(SimpleGrantedAuthority::new).collect(Collectors.toSet());
                 }
             };
         };

리뷰: 잘 추가해주셨네요 👍