개념

1) JWT 란

JWT(Json Web Token)은 클라이언트와 서버 통신 시 권한 인가(Authorization)를 위해 사용하는 토큰이다. 토큰에 사용자의 권한이나 정보를 포함한다.

세션은 쿠키 등을 통해 사용자를 식별하고 서버에 세션을 저장한다. 클라이언트는 권한이 필요한 요청을 서버에 보낼 때 저장된 세션이 있는지 확인하고, ‘인가’ 여부를 결정한다. (즉, 로그인된 상태 = 세션을 쿠키로 저장되어 있는 상태)

반면 JWT 토큰은 클라이언트에 저장하고 요청 시 HTTP 헤더에 토큰을 담아 요청하고 응답 받는 형식이다. Stateless 하기 때문에 한번 생성되면 제어가 불가능하다. 따라서 토큰을 임의로 삭제가 불가하기 때문에 토큰 만료 시간을 설정해야한다.

JWT 구조

HTTP 통신할 때

{
	"Authorization": "Bearer {생성된 토큰 값}",
}

2) 인증(Authentication) & 권한(Authorization)