sm 기술 블로그
[스프링 부트] JWT(Json Web Token)란? 본문
JWT(Json Web Token)
: 두 개체에서 JSON객체를 사용하여 정보를 안정성 있게 전달해주는 인증 방식이다.
jwt는 다음과 같은 구성을 지니고 있다.
실제로
다음과 같은 형식을 지니고,
https://jwt.io/ 다음 사이트에서 디코더를 진행하면 payload에 정보가 담긴 것을 알 수 있다.
세션과 JWT
1. 세션
1) 클라이언트에서 서버로 로그인 요청을 보냄
2) 서버는 로그인 정보 확인 후 세션아이디를 응답함. 이 세션아이디는 서버에서도 가지고 있음.
3) 클라이언트의 요청에는 2번에서 응답받은 세션아이디를 쿠키에 담아서 함께 요청
4) 서버는 함께 요청된 쿠키 속의 세션아이디를 확인하여 로그인된 사용자인지 확인한다.
단점 으로는
- 만약 서버가 여러대의 서버에서 운영된다면 서버측에서 저장하고 있는 모든 세션을 공유해야한다.
- 사용자가 많아질수록 서버측에서 모든 사용자의 세션들을 저장하기 부담스럽다.
2. JWT
1) 클라이언트에서 서버로 로그인 요청을 보낸다.
2) 서버는 로그인 정보 확인 후 토큰을 응답한다. 이 토큰은 서버에서 보관하지 않는다.
3) 이후 클라이언트는 응답받은 토큰을 요청에 함께 보낸다.
4) 서버는 토큰이 유효한지 검증하고 유효하면 로그인된 사용자라고 생각한다.
JWT와 세션의 가장 큰 차이점은 서버에서 기억하는 무언가가 없다는 것이다.
'스프링부트' 카테고리의 다른 글
[스프링부트] 입력 값 검증, 에러 메시지 표시 (0) | 2022.09.08 |
---|---|
[스프링부트] JWT(Json Web Token) - 코드 (0) | 2022.09.06 |
[스프링 부트] 리액트와 스프링부트 연결 (0) | 2022.08.29 |
[스프링 부트] 동일한 name으로 controller로 값 받아오기 (0) | 2022.08.27 |
[스프링부트] 결제시스템 도입 (0) | 2022.08.18 |
Comments