최근 개발 커뮤니티에서 JWT(JSON Web Token)의 사용 방식에 대한 중요한 논쟁이 불거졌습니다. 핵심은 JWT가 사용자 로그인 세션 유지(user session) 목적으로는 부적합하며, 오히려 보안 위험을 초래하고 비효율적이라는 주장입니다. 대신, 전통적인 쿠키 기반 세션(cookie sessions) 방식이 사용자 인증에 훨씬 더 안전하고 적합하다는 권고가 나왔습니다.
이 주장의 근거는 여러 가지입니다. 첫째, JWT 사양 자체가 매우 짧은 수명(약 5분 이내)의 토큰을 위해 설계되었으며, 장시간 로그인이 필요한 세션에는 맞지 않습니다. 둘째, '무상태(stateless)' 인증은 보안상 취약할 수밖에 없다는 점입니다. 토큰의 유효성을 안전하게 관리하려면 결국 어떤 형태로든 상태(state)를 저장해야 하는데, 이럴 바에는 모든 세션 데이터를 직접 저장하는 것이 더 낫다는 논리입니다. 또한, JWT는 단순한 세션 토큰을 저장하는 데 비효율적이며, 보안 전문가들 사이에서도 JWT 사양 자체의 신뢰성에 대한 의문이 제기되고 있습니다. 특히 초기 사양에서 위조 토큰 생성이 가능했던 점 등이 문제로 지적됩니다. 구글(Google)과 같은 대기업도 브라우저 사용자 세션에는 일반 쿠키 세션을 사용하며, JWT는 주로 SSO(Single Sign-On)와 같이 서버 간 인증 전송에 한정적으로 사용한다고 언급됩니다.
이러한 논의는 개발자들이 사용자 인증 시스템을 설계할 때 JWT의 오용을 경계하고, 각 기술의 본래 목적과 한계를 명확히 이해해야 함을 시사합니다. 무분별하게 '무상태'의 이점만을 추구하기보다는, 보안과 효율성을 종합적으로 고려하여 적절한 인증 메커니즘을 선택하는 것이 중요합니다. 만약 짧은 수명의 서명된 토큰이 필요하다면, PASETO와 같이 보안에 더 중점을 둔 대안 사양을 고려할 수 있습니다. 결국, 최신 기술 트렌드를 맹목적으로 따르기보다, 각 기술의 근본적인 설계 의도와 보안적 함의를 깊이 있게 이해하는 것이 견고하고 안전한 서비스를 구축하는 데 필수적입니다.