- GET /members/me 엔드포인트 구현 및 테스트 작성
- 권한 검증 로직을 AuthorizationFilter로 리팩터링
요구사항
- AuthorizationManager 를 활용하여 인가 과정 추상화
- 인가를 처리해줄 AuthorizationManager 생성
- RequestMatcherDelegatingAuthorizationManager 를 통한 AuthorizationManager 한번에 관리?
- 인가 과정을 추상화한 AuthorizationManager 를 작성한다. 이 때 필요한 AuthorizationDecision도 함께 작성한다. (실제 AuthorizationManager에는 verify도 있는데 이 부분에 대한 구현은 선택)
- SecuredMethodInterceptor와 Authorization Filter에서 작성된 인가 로직을 AuthorizationManager로 리팩터링 한다.
요구사항
- 요청별 권한 검증 정보를 별도의 객체로 분리하여 관리
- RequestMatcherRegistry와 RequestMatcher를 작성하고, RequestMatcher의 구현체를 작성한다.
- AnyRequestMatcher: 모든 경우 true를 리턴한다.
- MvcRequestMatcher: method와 pattern(uri)가 같은지 비교하여 리턴한다.
- RequestMatcherEntry의 T entry는 아래에 해당되는 각 요청별 인가 로직을 담당하는 AuthorizationManager가 된다.
- /login은 모든 요청을 받을 수 있도록 PermitAllAuthorizationManager로 처리
- /members/me는 인증된 사용자만에게만 권한을 부여하기 위해 AuthenticatedAuthorizationManager로 처리
- /members는 "ADMIN" 사용자만에게만 권한을 부여하기 위해 �HasAuthorityAuthorizationManager로 처리
- 그 외 모든 요청은 권한을 제한하기 위해 �DenyAllAuthorizationManager로 처리
아래 객체와 시큐리티 코드 확인 // SpEL // Role Authority // Role Hierarchy // AuthoritiesAuthorizationManager // SecureMethodSecurityConfiguration // SecuredAuthorizationManager