sm 기술 블로그

[스프링 부트] JWT(Json Web Token)란? 본문

스프링부트

[스프링 부트] JWT(Json Web Token)란?

sm_hope 2022. 9. 5. 21:45

JWT(Json Web Token)

: 두 개체에서 JSON객체를 사용하여 정보를 안정성 있게 전달해주는 인증 방식이다.

jwt는 다음과 같은 구성을 지니고 있다.

실제로

다음과 같은 형식을 지니고,

https://jwt.io/ 다음 사이트에서 디코더를 진행하면 payload에 정보가 담긴 것을 알 수 있다. 

세션과 JWT

1. 세션

1) 클라이언트에서 서버로 로그인 요청을 보냄

2) 서버는 로그인 정보 확인 후 세션아이디를 응답함. 이 세션아이디는 서버에서도 가지고 있음.

3) 클라이언트의 요청에는 2번에서 응답받은 세션아이디를 쿠키에 담아서 함께 요청

4) 서버는 함께 요청된 쿠키 속의 세션아이디를 확인하여 로그인된 사용자인지 확인한다.

 

단점 으로는

- 만약 서버가 여러대의 서버에서 운영된다면 서버측에서 저장하고 있는 모든 세션을 공유해야한다.

- 사용자가 많아질수록 서버측에서 모든 사용자의 세션들을 저장하기 부담스럽다.

 

2. JWT

1) 클라이언트에서 서버로 로그인 요청을 보낸다.

2) 서버는 로그인 정보 확인 후 토큰을 응답한다. 이 토큰은 서버에서 보관하지 않는다.

3) 이후 클라이언트는 응답받은 토큰을 요청에 함께 보낸다.

4) 서버는 토큰이 유효한지 검증하고 유효하면 로그인된 사용자라고 생각한다.

 

JWT와 세션의 가장 큰 차이점은 서버에서 기억하는 무언가가 없다는 것이다.

Comments