Java/SpringBoot

    [SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.

    [SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.

    ● 이슈 발생 시점 SpringSecurity를 이용해 JWT 인증/인가 절차를 CustomTokenProvider, CustomUserDetailsService를 정의하여 개발하고 있었다. 1. 정상적인 아이디와 비밀번호로 인증 요청이 오면 DB에 유저가 있는지 확인하는 CustomUserDetailsService.loadUserByUsername()이 1번만 실행됨. ( 예상한 로직과 실제 정상적인 로직 ) 2. 비정상적인 아이디와 비밀번호로 인증 요청이 오면 CustomUserDetailsService.loadUserByUsername()이 여러 번 실행됨 ( 예상하지 못한 로직과 비정상적인 로직.... ) ● 분석 1. Provider의 authenticate는 ProviderManager에서 호..

    [SpringBoot] UserDetailsService UserNotFoundException 안되는 이유

    [SpringBoot] UserDetailsService UserNotFoundException 안되는 이유

    ● 이슈 발생 시점 Spring Security + JWT를 이용해 인증, 인가 기능을 구현하던 중 UserDetailsService에서 loadUserByUsername함수에서 id로 DB 조회 시 데이터베이스에서 찾을 수 없으면 UsernameNotFoundException을 Throw 하게 되어있는데 BadCredentialsException으로 리턴되고 있었다. 왜 그런지 궁금하여 분석 후 포스팅한다. ● 분석 AuthenticationManager에 UserDetailsService를 등록해주면 기본적으로 DaoAuthenticationProvider가 등록해준 UserDetailsService를 가지고 있게 된다. 그리고 AbstractUserDetailsauthenticationProvide..

    [SpringBoot] 종속성 순환 에러 트러블슈팅

    [SpringBoot] 종속성 순환 에러 트러블슈팅

    AOP (Aspect Oriented Programming)를 공부하다가 "종속성 순환 에러"가 발생하였다. 해당 이슈에 대해 슈팅해보겠다. ● 트러블 이슈 각 메서드 ( Controller, Service, Repository )에서 처리 시간을 처리하는 AOP를 만드는 도중 아래 에러 메시지가 발생하였다. The dependencies of some of the beans in the application context form a cycle: memberController defined in file [C:\Users\pc\Desktop\hello-spring\hello-spring\out\production\classes\hello\hellospring\controller\MemberControl..

    [SpringBoot] StereoType, @Component과 @Bean 차이점

    [SpringBoot] StereoType, @Component과 @Bean 차이점

    이번 포스트에서는 @Bean과 @Component 어노테이션의 차이점을 알아볼 것이다. @Component로 지정된 클래스들은 모두 스프링에서 Bean으로 등록된다. @Component 어노테이션은 스프링 컨테이너에서 사용되는 StereoType인데 먼저 StereoType이란 무엇인지 살펴본다. StereoType이란? StereoType의 의미는 "고정관념". "정형화된 생각"이라고 한다. 스프링에서는 스프링 컨테이너가 관리 컴포넌트로 식별할 수 있게 해주는 마커 같은 의미를 지닌다. 이전 버전에서는 XML 파일에 Bean들을 모두 명시하여 관리하고 있었다. 하지만 이러한 관리는 XML 파일의 거대화를 막지 못하였다. 그래서 아래의 버전부터 어노테이션이 등장하기 시작했다. Spring 2.0 : @R..