REST API 인증 방식의 변화와, 현재 JWT(JSON Web Token) 토큰을 많이 사용하게 된 배경에 대해 정리하였습니다.
기존 웹 애플리케이션에서는 주로 세션 기반 인증 방식이 사용되었습니다. 하지만 이 방식은 서버가 사용자의 로그인 상태를 기억하게 만들며, 이는 REST API의 상태 비저장(Stateless) 원칙에 어긋납니다.
보안을 강화하고 REST 원칙을 준수하기 위해, 많은 REST API는 HTTP 헤더를 사용한 인증 방식을 도입했습니다. 이 방식은 민감한 정보가 URL에 노출되지 않는 장점이 있었지만, 클라이언트가 계속해서 인증 정보를 관리해야 하는 부담이 있었습니다.
API 토큰 인증 방식은 REST API의 상태 비저장(Stateless) 특성에 잘 맞습니다. 이 방식에서 사용자가 로그인하면, 서버는 UUID 랜덤 값을 기반으로 고유한 API 키를 발급합니다. 이 API 키는 단순한 식별자 역할을 하며, 특별한 정보나 패턴을 포함하지 않습니다. 클라이언트는 이 키를 저장하여 이후 요청에 사용하고, 서버는 키를 확인하여 요청을 받아들입니다.
반면, JWT 인증 방식은 토큰 자체에 사용자 정보(페이로드)와 서명을 포함 합니다. JWT는 '수학적 패턴'을 기반으로 한 암호화 방식을 사용하여, 토큰 안에 사용자의 정보, 권한, 토큰의 유효성 등에 관한 데이터를 안전하게 담을 수 있습니다. 이로 인해 서버에서 데이터베이스 조회 횟수를 줄일 수 있으며, 토큰 자체를 통해 사용자를 인증하고 요청을 처리할 수 있습니다. 이 방식은 처리 속도를 크게 향상시킵니다. 또한 서명을 통해 데이터의 위변조 여부를 검증할 수 있어, 보안성이 뛰어납니다.