Spring Security, JWT 인증 서버 구현 0

1c2·2025년 1월 15일
0

스프링 시큐리티

목록 보기
2/5

프로젝트 Flow

사용자 인증 과정은 다음과 같다.

Filter Chain

서버가 요청을 받으면 컨트롤러에 넘어가기 전에 Filter Chain을 거치게 된다. Spring Security는 여기서 인증 및 인가에 대한 처리를 진행한다.

SecurityContextHolder

SecurityContextHolder는 인증된 사용자의 세부정보를 저장하는 곳이다. Spring Security는 SecurityContextHolder가 비어있지 않으면 인증된 사용자라고 판단한다.

즉 JWT가 만약 유효하다면 SecurityContextHolder에 Authentication을 채워주어 이후엔 Filter Chain을 통과할 수 있도록 할 수 있다.

  • Authentication 내부의 Principal은 인증된 사용자의 정보를 담고 있다. principal은 UserDetail 인터페이스의 구현체 User을 extends한 UserPrinciple객체를 사용할 예정이다.

  • Credentials은 인증에 필요한 정보, Authorities는 인증된 사용자의 권한 정보를 담고 있다.

구현할 필터들

  1. JWT filter
  • JWT 유효성 판단. Form을 사용한 로그인을 할 때 사용되는 UsernamePasswordAuthenticationFilter앞에 넣을 예정
  1. AuthenticationEntryPoint
  • JWT 검증 도중 유효 시간이 만료되었거나 잘못된 전자 서명 등 인증 과정에 오류가 발생하면 사용되는 Filter로 왜 인증에 실패했는지 응답하는데 사용.
  1. JwtAccessDeniedHandler
  • 유효하지만 권한이 부족해 접근할 수 없는 경우 사용되는 Filter.

정리하면 다음과 같다.

0개의 댓글

관련 채용 정보