Spring

JWT인증 설정 시 SpringBootTest

Seung__Yong 2023. 5. 6. 02:20

- JWT인증이 설정되어 있다면 원래대로라면 로그인을 통해 인증한 후 accessToken값을 매 요청마다 설정해주어야 합니다.

- 이렇게 되면 컨트롤러 테스트에서 MockMvc를 이용해 요청을 날릴 때 마다 로그인을 먼저 한 다음 accessToken값을 얻어와서 다시 요청을 해야합니다.

- 일단 결론적으로 이 과정을 WithUserDetails를 통해 생략할 수 있음을 확인했습니다.

@WithUserDetails("user1") 
// "user1" 값은 등록된 Bean 중 UserDetailsService를 찾아 loadUserByUsername의 파라미터 값으로 바인딩된다.

- WithUserDetails를 사용하면 로그인 과정이 진행되고 결과적으로 SecurityContext에 Authentication이 설정되게 됩니다.

-> 디버깅을 찍어보니 SecurityContextHolderFilter보다 먼저 동작함을 확인할 수 있었습니다.

-> Jwt인증을 거치기도 전에 SecurityContext에 인증객체가 들어있기 때문에 accssToken은 보낼 필요가 없습니다.