[Spring] 스프링 시큐리티와 JWT를 이용해 로그인 처리하기

19·2022년 7월 19일
1

Spring

목록 보기
1/29

흐름

  1. 로그인 시, 토큰을 생성한다.
  2. 클라이언트에 토큰을 저장한다.
  3. 클라이언트에서 요청 때마다 토큰이 동봉되어 서버로 보내진다.
  4. 서버는 토큰이 유효한 지 검사한다.
    4-1. 유효 -> OK
    4-2. 유효X -> Nope

로그인

먼저 로그인을 하게 되면 토큰이 발급되고, 이를 클라이언트에 보내준다.

토큰 생성은 아래와 같이 진행되었다.

이메일 정보를 토큰에 넣었다.

토큰 검증

토큰이 발급되어 클라이언트로 전달되었고, 클라이언트에서 요청할 때 토큰이 함께 보내지게 된다.
이 때, 서버에서 토큰이 유효한지 이를 먼저 검증한다.

시큐리티에서 JWT 토큰을 검증하는 필터를 등록했다.
필터는 아래와 같다.

요청에서 토큰의 정보를 읽어온다 (resolveToken)
읽어온 토큰이 유효한지를 검사한다 (validateToken)
유효하면 토큰에서 인증 정보를 조회한다. (getAuthentication)
일치하면 인증이 완료된다.

resolveToken은 아래와 같다.

Authorization Bearer 헤더로 넘어오는 토큰 값을 가져온다

validateToken은 아래와 같다.

토큰이 유효한 지 검사하는 역할을 수행한다.

getAuthentication은 아래와 같다.

memberDetailsService는 UserDetailsService를 구현했다.
토큰에서 꺼낸 이메일 정보와 일치하는 데이터가 DB에 있는지 조회한다.
DB에 있으면 인증 통과

profile
하나씩 차근차근

0개의 댓글