💡 인가 처리는 인증 처리 이후 사용자 권한에 따른 사이트 접근에 관해 일어나는 과정입니다.
사용자가 HTTP 요청을 합니다.
FilterSecurityInterceptor
는 SecurityContextHolder
로부터 Authentication을 얻습니다.
FilterSecurityInterceptor
는 FilterInvocation
을 생성합니다.
FilterInvocation
을 SecurityMetadataSource
에 전달하고 ConfigAttribute
를 생성합니다. ConfigAttribute
는 다수가 존재할 수 있습니다.
Authentication,
ConfigAttribute
를 AccessDecisionManager
로 전달합니다.
AccessDecisionManager
는 decide(Authentication, Collection)
메서드를 호출하여 AccessDecisionVoter
에 처리를 위임합니다. AccessDecisionVoter
또한 여러 개일 수 있습니다.
각 AccessDecisionVoter
는 vote()
메서드를 호출하여 해당 Authentication의 Authorities
와 ConfigAttribute
목록들을 비교하여 접근 권한을 부여하거나 제한합니다.
7.1. 권한이 존재하는 경우 AccessDecisionManager
에게 ACCESS_GRANTED
를 전달합니다.
7.2. 권한이 존재하지 않는 경우 AccessDeniedException
예외를 던집니다.