Issue
![[SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9rdOg%2FbtrBaPWi05K%2FB2AE3MNwkO0GYMqsqodeJ0%2Fimg.png)
[SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.
● 이슈 발생 시점 SpringSecurity를 이용해 JWT 인증/인가 절차를 CustomTokenProvider, CustomUserDetailsService를 정의하여 개발하고 있었다. 1. 정상적인 아이디와 비밀번호로 인증 요청이 오면 DB에 유저가 있는지 확인하는 CustomUserDetailsService.loadUserByUsername()이 1번만 실행됨. ( 예상한 로직과 실제 정상적인 로직 ) 2. 비정상적인 아이디와 비밀번호로 인증 요청이 오면 CustomUserDetailsService.loadUserByUsername()이 여러 번 실행됨 ( 예상하지 못한 로직과 비정상적인 로직.... ) ● 분석 1. Provider의 authenticate는 ProviderManager에서 호..
![[SpringBoot] UserDetailsService UserNotFoundException 안되는 이유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQOLfK%2FbtrBaMecCMc%2FKVMh8FCBk0ecK0UUNCxEIK%2Fimg.png)
[SpringBoot] UserDetailsService UserNotFoundException 안되는 이유
● 이슈 발생 시점 Spring Security + JWT를 이용해 인증, 인가 기능을 구현하던 중 UserDetailsService에서 loadUserByUsername함수에서 id로 DB 조회 시 데이터베이스에서 찾을 수 없으면 UsernameNotFoundException을 Throw 하게 되어있는데 BadCredentialsException으로 리턴되고 있었다. 왜 그런지 궁금하여 분석 후 포스팅한다. ● 분석 AuthenticationManager에 UserDetailsService를 등록해주면 기본적으로 DaoAuthenticationProvider가 등록해준 UserDetailsService를 가지고 있게 된다. 그리고 AbstractUserDetailsauthenticationProvide..