사용자 인증은 JWT 토큰 방식을 사용합니다.

http는 무상태 프로토콜이므로, 서버와 클라이언트의 상태를 유지하기 위해 JWT 토큰을 이용합니다.

클라이언트는 서버와 통신할 때, 요청 헤더에 JWT 토큰을 포함하여 요청해야 합니다.

프로세스


현재 로그인부터 로그아웃까지 인증을 유지하기 위한 프로세스는 다음과 같습니다.

  1. 클라이언트의 로그인 요청(아이디, 비밀번호)
  2. 서버에서 아이디, 비밀번호 일치 여부를 검증하고, 올바르다면 JWT 토큰 응답
    1. 현재 토큰은 accessToken 하나만 이용하고 있습니다.
    2. 토큰의 만료시간은 12시간 으로 설정했습니다.
  3. 클라이언트는 응답받은 JWT 토큰을 브라우저의 로컬 스토리지에 저장
  4. 클라이언트는 요청 헤더에 JWT 토큰을 포함하여 서버에 요청
  5. 서버에서 요청 헤더에 포함된 JWT 토큰을 검증
    1. JWT 토큰의 만료, 변조 등을 검증
    2. 현재 검증 로직은 HandlerMethodArgumentResolver 를 사용하고 있으므로, 검증을 위해선 컨트롤러의 메서드 인자로 @LoginUser AuthInfo 를 선언해야 합니다.
  6. JWT 토큰에 문제가 없다면, 정상적으로 컨트롤러의 메서드를 수행합니다.

코드 예제


클라이언트

서버