[코드스테이츠] S4.Unit3 회고

JinYoung Choi·2023년 6월 5일
0

JWT 신기하다!

현업에 있는 친구들한테 물어보니 자기 회사는 JWT 와 세션을 같이 사용한다고 한다.

세션과 JWT를 함께 사용한다는 말을 듣고, 이 둘의 차이점과 각각의 장단점에 대해 더 깊이 이해하고 싶어졌다!

이 둘은 얼마나 잘 혼용될 수 있을지,
그리고 어떤 상황에서는 한 가지 기술이 다른 것보다 더 유리할 수 있는지에 대해 더 배워 봐야겠다.

JWT(JSON Web Token)란?

JWT(JSON Web Token)는 웹에서 토큰 기반 인증을 위해 사용되는 오픈 표준. 이 토큰은 클라이언트와 서버 간에 정보를 안전하게 전송할 수 있게 해주는 간결하고 독립적인 방법을 제공한다.

JWT 구조:

  • 헤더(Header)
  • 페이로드(Payload)
  • 서명(Signature)

헤더는 토큰의 유형(JWT)과 사용되는 해시 알고리즘을 담고 있다. 페이로드는 실제 전달할 메시지나 정보를 담고 있으며, 이는 클레임(Claim)이라는 이름의 여러 데이터 단위로 이루어져 있다. 서명은 헤더와 페이로드를 합친 다음 주어진 암호로 해시한 결과이다.

JWT의 장점:

  • 서버 측에서 세션 상태를 유지할 필요가 없다. 즉, 상태를 유지하지 않는(stateless) 인증 메커니즘이 가능하다. 이러한 특성 덕분에 서버의 부하를 줄일 수 있으며, 확장성을 높일 수 있다.
  • 쿠키를 사용하지 않으므로, 크로스 도메인 요청이 가능하다.
  • 모바일 애플리케이션과 같은 경우에도 사용하기 편리하다.
    단, JWT는 보안에 대한 주의가 필요하다. JWT는 토큰 자체에 정보를 포함하고 있기 때문에, 민감한 정보가 노출되지 않도록 주의해야 한다. 또한, 토큰의 유효 기간을 적절히 관리하고, HTTPS와 같은 안전한 채널을 통해 토큰을 전송해야 한다.

세션 기반 자격 증명 방식 vs 토큰 기반 자격 증명 방식

세션 기반 인증:

  • 장점:
  1. 세션 기반 인증은 서버가 사용자의 상태를 추적하므로, 사용자에 대한 추가 정보를 쉽게 저장하고 관리할 수 있다.
  2. 통신이 끊긴 경우에도 사용자 정보를 유지할 수 있다.
  • 단점:
  1. 서버가 각 세션을 추적하고 관리해야 하므로 서버의 부하가 증가하고, 대량의 트래픽에 대해 확장성이 제한될 수 있다.
  2. 웹 어플리케이션에서 크로스 도메인 요청을 처리하는 데 제한이 있을 수 있다.
    상태를 저장하는 방식이므로, 서버의 자원을 많이 사용하게 된다.

토큰 기반 인증 (예: JWT):

  • 장점:
  1. 상태를 저장하지 않는(stateless) 특성이므로, 서버 부하를 줄이고 확장성을 높일 수 있다.
  2. 쿠키를 사용하지 않으므로, 크로스 도메인 요청이 가능하다.
  3. 모바일 어플리케이션과 같은 경우에도 사용하기 편리하다.
  • 단점:
  1. 토큰의 크기가 상대적으로 크므로, 세션 기반 인증에 비해 네트워크 트래픽이 증가할 수 있다.
  2. 서버가 토큰을 관리하지 않으므로, 일단 발행된 토큰은 만료 시간이 될 때까지 유효하므로 보안에 대한 관리가 필요하다.
profile
백엔드 취준생

0개의 댓글