포스트

JWT + 카카오 소셜 로그인 (1)

로그인 UI
로그인 UI
카카오 로그인
카카오 로그인

JWT(Jason Web Token)

JWT(JSON Web Token)는 두 개체 간에 정보를 JSON 객체로 안전하게 전송하기 위한 개방형 표준( RFC7519 )이고, 디지털 서명으로 검증되고 신뢰될 수 있다. JWT는 주로 사용자가 로그인한 후 요청마다 JWT를 포함시켜 허용된 리소스에 접근하는 권한 부여와 당사자 간에 안전하게 정보를 전송하는 정보 교환에 사용된다. 서명된 토큰은 클레임의 무결성을 보장하고, 공개/비공개 키를 사용하면 발신자의 신원을 확인할 수 있다.

JWT의 구성요소

JWT(JSON Web Token)는 (.)으로 구분된 세 부분으로 구성되어있다.

  1. 헤더(Header): 토큰 유형과 서명 알고리즘을 포함
  2. 페이로드(Payload): 사용자 및 추가 데이터(클레임)를 포함
  3. 서명(Signature): 헤더와 페이로드의 무결성을 검증하는 서명

JWT 동작 원리

JWT 구성 요소

React와 Spring Boot로 JWT를 사용한 로그인 구현의 동작 과정은 다음과 같다.

1. 로그인 및 토큰 발급

  1. ID/PW 로그인 요청: 클라이언트(React)가 서버(Spring Boot)에 사용자 ID와 비밀번호를 보내 로그인 요청을 한다.
  2. 토큰 발급: 서버는 ID와 비밀번호를 검증한 후, Access Token과 Refresh Token을 생성하여 클라이언트에 응답한다.
  3. API 요청: 클라이언트는 이후의 API 요청 시 Access Token을 HTTP 헤더에 포함하여 서버에 요청을 보낸다.

2. 토큰 갱신

  1. Access Token 만료 응답: 서버가 Access Token의 만료를 감지하고 클라이언트에 만료 응답을 보낸다.
  2. 토큰 재발급 요청: 클라이언트는 Refresh Token을 사용하여 새로운 Access Token과 Refresh Token의 재발급을 서버에 요청한다.
  3. 새 토큰 발급: 서버는 Refresh Token을 검증하고, 새로운 Access Token과 Refresh Token을 발급하여 클라이언트에 응답한다.

이 과정은 Access Token의 짧은 유효기간으로 인해 자주 갱신이 필요할 때, Refresh Token을 통해 새로운 Access Token을 발급받아 지속적인 인증 상태를 유지하게 한다.

[참조]

https://jwt.io/introduction

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.