-
[ Network ] 세션(Session)과 토큰(Token)차이 & JWT공부 !/Computer Science 2022. 5. 15. 16:08반응형
Session & Token
HTTP 는 stateless 한 특성을 가지기 때문에 각 통신의 상태가 저장되지 않는다
하지만 우리가 새 페이지를 요청할때마다 로그인을 해야한다면 엄청나게 불편할 것이다
이러한 문제를 해결하기 위한 대표적인 방법 두 가지가 세션과 토큰이다
유저가 로그인을 시도할때 서버상에서 일치하는 유저 정보를 찾았다면
인증 확인의 표시로 세션과 토큰을 발급해준다 !
웹 브라우저에서는 해당 세션과 토큰 정보를 저장해두고 새로운 request 를 보낼때마다
인가를 위해 해당 세션과 토큰을 함께 보내게 된다
세션과 토큰의 차이
세션과 토큰 모두 동일한 목적을 가지지만 차이가 존재한다
그 중 큰 차이점은 세션은 데이터베이스 서버에 저장된다는 것이고
토큰은 클라이언트 측에서만 저장하다는 점이다 !
JWT
JWT 는 Json Web Token 의 약자로 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미한다
JWT 장단점
장점
- 무상태성 ( stateless) , 확장성 : 토큰의 값만 알고 있다면 세션 스토리지가 필요하지 않다
- 보안성 쿠키를 전달하지 않아도 되므로 쿠키를 사용함으로 발생하는 취약점이 사라진다
- 어떤 디바이스나 도메인에서도 토큰만 유효하다면 요청이 정상적으로 처리된다
단점
- 길이가 길어질수록 JWT 토큰이 길어지게 되는데 길수록 네트워크 대역폭 낭비가 심해진다
- 보안 JWT 는 기본적으로 Payload 에 대한 정보를 암호화하지 않기 때문에 중요데이터를 넣지 말아야한다
( 토큰에 담을 정보가 들어있는 Payload 의 담긴 정보 한 조각을 Claim 이라 부르고 name-value 의 한 쌍으로 이뤄져 있다 )
JWT 는 회원 인증이나 정보 교류에서 유용하게 사용될 수 있다
회원인증을 예로 설명하면 사용자가 로그인을 했을때 서버는 사용자의 정보를 기반으로한 토큰을 발급한다
그 후 사용자가 서버에 요청할때마다 JWT 를 포함하여 전달한다
서버는 클라이언트에서 요청을 받을때마다 해당 토큰이 유효한지 검증하고 확인하여 작업을 처리하게 된다 !
서버에서는 사용자에 대한 세션을 유지할 필요가 ㅇ벗고 사용자가 요청을 했을때 토큰만 확인하면되므로
세션 관리가 필요없어 서버 자원과 비용을 절감할 수 있다 !
반응형'공부 ! > Computer Science' 카테고리의 다른 글
[ CS 기술면접 ] 알고리즘 예상질문 모음 ! (0) 2022.05.22 [ CS 기술면접 ] 자료구조 예상질문 모음 ! (0) 2022.05.21 [ Network ] DNS (0) 2022.05.15 [ Network ] 쿠키(Cookie) & 세션(Session) 특징과 차이 (0) 2022.05.15 [ Network ] Socket.io와 Web Socket 차이 (0) 2022.05.06