JWT, Cookie & Session

weffa·2022년 3월 13일
0

인증 방식

HTTP

HTTP는 요청에 대한 응답을 처리하게 되면 연결을 끊어버리고 통신의 상태가 남지 않는 비연결성, 무상태성이라는 특징이 있다.

이 때문에 서버는 클라이언트를 식별할 수 없고 새로고침을 할 때 마다 로그인을 해야하는 문제가 있다. 이를 Cookie & Session 이나 JWT를 통해서 해결할 수 있다.

Cookie는 사이트가 사용하는 서버를 통해 클라이언트의 브라우저에 설치되는 기록정보 파일이다.

세션은 비밀번호와 같은 개인정보를 서버에 저장하고 관리하고 각 사용자마다 고유한 세션아이디를 발급한다.

로그인 할때 서버는 쿠키에 세션아이디를 담아 클라이언트에 저장하고 클라이언트는 요청을 보낼때마다 세션아이디 쿠키를 보내 서버는 클라이언트를 식별할 수 있다.

  • 서버에서 Session 통제 가능
  • 네트워크 부하 낮음
  • 서버에서 세션 저장소를 사용하여 요청이 많아지면 서버에 부하 높음

JWT

JWT는 JASON Web Token으로 인증에 필요한 정보들을 암호화시킨 토큰인데 이를 HTTP 헤더에 실어 서버가 클라이언트를 식별할 수 있다.

JWT 구조

정보를 암호화할 해싱 알고리즘과 토큰의 타입을 지정한다.

Payload

토큰에 담을 클라이언트의 아이디값, 유효 기간 등의 정보를 지닌다.

Signature

인코딩된 Header와 Payload를 더한 후 서버 측에서 관리하는 비밀키로 해싱하여 생성하며 토큰의 위변조 여부를 확인한다.

JWT 장점

  • 별도에 저장소가 필요 없어 서버의 확장이나 유지보수에 유리
  • 토큰 기반으로 다른 웹 서비스에서도 로그인이 가능해 확장성이 우수

JWT 단점

  • 토큰의 길이가 길어 인증 요청이 많으면 네트워크 부하 높음
  • Payload 자체는 암호화가 되지 않아 중요한 정보를 담을 수 없음
  • 토큰은 유효기간 동안 계속 사용이 가능해 탈취에 대한 대처가 어렵다

0개의 댓글