UsernamePasswordAuthenticationFilter를 통한 Authentication 메커니즘 살펴보기
- AuthenticationProvider가 처리 가능한 Authentication에 대해 알려주는 support 메소드를 지원하고, authenticate() 에서 인증 로직을 처리해줌
코드 구현
- 통행증을 위한 Authentication 클래스(
StudentAuthenticationToken
) 정의, principal(Student
)에 들어갈 class 정의
- 그것을 다룰 AuthenticationProvider 클래스 정의
WebSecurityConfigurerAdapter
를 상속받은 클래스에서 authenticationProvider로 등록해주기
진행 순서
- http.formLogin()을 통해서 로그인 시,
UsernamePasswordAuthenticationFilter
의 attemptAuthentication()으로 넘어오게 됨 - this.getAuthenticationManager() → authRequest의 타입인 UsernamePasswordAuthenticationToken을 처리할 수 있는 AuthenticationProvider를 반환하게됨
- UsernamePasswordAuthenticationToken을 처리할 수 있는(supports메소드에서 정의) AuthenticationProvider → StudentManager
- StudentManager의 authenticate() 에서 UsernamePasswordAuthenticationToken을 StudentAuthenticationToken으로 변환하여 반환