스프링 시큐리티 - 인증 Authentication

Seongjin Jo·2023년 3월 4일
0

SpringBoot

목록 보기
3/4

목적

스프링 시큐리티의 인증(Authentication)과정을 이해하기 위함이다.
login api요청이 들어왔을때의 동작과정을 이해하기 위함이다.

Authentication

  1. 우선 적으로 login 요청이 들어오면 UsernamePasswordAuthenticationFilter라는 필터가 발동된다. 이 필터에는 attemptAuthentication라는 함수가 있는데 이 함수는 login을 요청하는 발동되는 함수이다.
  2. 이 login요청에서의 받은 input값을 Mapper를 통해 오브젝트형태로 변경하여 us,pw를 받는다.
  3. 그 다음은 , 웹은 세션 공간인 SecurityContextHolder에 있는 Authentication(인증회원)에 loginUser를 등록하기 위해서 JWT토큰이 아닌 us,pw를 담는 인증토큰을 만든다.
  4. 그리고 authenticationManager.authenticate(authenticationToken); 를 호출해서 us,pw가 담긴 인증 토큰값을 집어넣는다. 그렇게 되면 스프링 시큐리티가 이 회원이 인증된 회원인지 알기 위해서 PrincipalService의 loadUserByUsername() 함수가 실행되고 -> DB에 있는 us,pw와 인증토큰의 us,pw를 확인해서 일치하면 강제로그인을 시킨다.
  5. 그렇게 되면 시큐리티 전용 세션에 그 로그인 회원이 담기게된다.
  6. 이 과정을 거치면 마지막으로 attemptAuthentication 실행 후 인증이 정상적으로 되었으면 successfulAuthentication 함수가 실행된다
  7. successfulAuthentication 함수에서는 JWT토큰을 생성하여 response헤더에 토큰을 응답하는 함수이다.

0개의 댓글