채널톡 아이콘

인프런 커뮤니티 질문&답변

구준형님의 프로필 이미지

작성한 질문수 11

스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션

Jwt 인가필터 구현 및 등록완료

SecurityContextHolder.getContext.setAuthentication

작성

·

868

0

 인증 필터와는 달리 SecurityContextHolder.getContext.setAuthentication, 곧 바로 세션을 만들어주셨는데요, 이게 굳이 userDetailsService의 loadByUsername을 호출할 필요가 없기 때문인가요?

답변 1

1

최주호님의 프로필 이미지
최주호
지식공유자

setAuthentication 은 loadByUsername을 호출해서,

  1. 진짜 DB에 있는지 확인하고

  2. 인증 객체인 Authentication을 스프링 시큐리티 컨텍스트 홀더에 담는 역할을 합니다.

  3. 시큐리티 컨텍스트 홀더에 인증 객체가 담기면, 시큐리티가 그걸 통해서 인증과 권한처리를 해줍니다.

우리의 인가 필터의 목적은 DB에 있는지 검증하는 것이 아닙니다.

  1. 헤더에 토큰이 있으면 검증을 하고

  2. 시큐리티 컨텍스트 홀더에 인증 객체를 강제로 담아주면, 시큐리티가 그걸 통해서 인증과 권한처리를 해줍니다.

구준형님의 프로필 이미지
구준형
질문자

감사합니다 ㅎ