1 minute read

JWT

JWT는 JSON Web Token의 줄임말로, 웹 통신에서 사용되는 토큰 기반의 인증 방식 중 하나입니다. 각 토큰은 헤더, 페이로드, 서명 세 부분으로 이루어져 있습니다. 토큰 자체가 모든 정보를 담고 있어 서버의 세션 저장소에 정보를 저장하지 않아도 됩니다.

JWT의 구성

  • Header: JWT 토큰의 타입과 알고리즘 정보가 포함된 JSON 객체입니다.
  • Payload: JWT에 담길 정보를 포함하는 JSON 객체입니다. 사용자 식별자, 권한 등이 포함될 수 있습니다.
  • Signature: JWT를 인증하기 위한 서명 정보로, 비밀 키를 사용하여 생성됩니다.

세션

세션은 사용자의 인증과 권환 부여 과정에서 서버가 데이터를 관리하는 방식입니다. 서버에 저장된 데이터는 안전하고 많은 정보를 담을 수 있지만, 서버 부하가 높아질 수 있습니다.

JWT vs 세션

JWT

  • 무상태(Stateless): 토큰 자체가 정보를 담고 있어 서버의 세션 저장소를 필요로 하지 않습니다.
  • 확장성: 다중 서버로 시스템을 확장할 때 문제가 없습니다.

세션

  • 보안성: 서버에 데이터를 저장하고 관리하기 때문에 보안성이 높습니다.
  • 세션 유지: 클라이언트가 세션ID를 가지고 있어야 하며, 서버에서 상태를 유지해야 합니다.

JWT 보안과 관련된 이슈

  • JWT는 토큰이 노출 시 보안 취약성 문제가 발생할 수 있습니다. 만료 시간을 짧게 설정하거나, 만료된 토큰을 서버에 저장하여 검증해야합니다.
  • 또한, 통신 암호화를 위해 HTTPS를 사용하는 것이 중요합니다.

종합하자면,

  • JWT는 무상태성으로 확장성 측면에서 장점을 가지고 있으나, 탈취시 보안이 취약해집니다.
  • 세션은 보안성과 유연한 데이터 처리를 위해 사용되며, 서버 자원을 더 많이 사용합니다.

개발하고 있는 시스템의 특성, 보안 요구사항, 확장성 등을 고려하여 JWT 또는 세션 중 어떤 것을 선택할지 결정하는 것이 중요합니다.

Leave a comment