Spring Security의 인증 처리 흐름

구황작물·2022년 7월 25일
0

Security

목록 보기
5/10

Spring Security 에서 일반적인 Authentication(인증) 처리는 다음과 같습니다.

  1. 사용자가 http Request로 Username과 password를 가진 상태로 접근한다. Request는 각각 관련된 SecurityFilterChain을 통과한다.

  2. 로그인 정보(username, password)는 AuthenticationFilter의 구현체인 UsernamePasswordAuthenticationFilter로 전달되고 UsernamePasswordAuthenticationFilter는 request에서 얻은 username과 password로 UsernamePasswordAuthenticationToken을 만든다.(Authentication 객체)

  3. 그렇게 형성된 Token을 AuthenticationManager한테 전달한다.

  4. AuthenticationManager는 전달받은 Authentication을 AuthenticationProvider(s)에게 전달하여 유효성 검증, 처리를 위임한다.

  1. 입력받은 사용자 인증정보의 유효성 검증을 위해 UserDetailService로 전달합니다.

  2. UserDetailsService는 loadByUsername()메서드를 통해 Username과 password가 유효한지 검사하고 만약 인증이 통과되면 Username으로 UserDetails를 생성한다.

  3. UserDetails는 사용자에 대한 이름, 비밀번호 정보와 만료가 되었는지 등등을 검증한다.

  4. 만약 성공적으로 이루어지면 생성된 UserDetails를 AuthenticationProvider(s)에 전달한다.

  5. authenticate() 메서드가 호출되며 UserDetails와 Authorities로 생성한 Authentication을 전달한다.

  6. 생성된 Authentication을 AuthenticationFilter에 전달한다.

  7. AuthenticcationFilter는 인증 처리를 모두 완료하고 인증에 성공한 토큰을 SecurityContext에 저장한다. 그후 인증에 성공했다면 AuthenticationSuccessHandler를 호출하게 된다.

profile
그냥 개발 좋아하는 덩이뿌리식물

0개의 댓글

관련 채용 정보