
보통 서버에서 클라이언트 인증을 확인하는 방법으로는 대표적으로 쿠키, 세션 토큰 3가지 방식이 존재합니다.
1. 쿠키인증
쿠키는 key - value 형식의 문자열 덩어리 입니다.
클라이언트가 어떤 웹사이트를 방문할 경우, 그 사이트가 이용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일 입니다. 쿠키가 있으면 웹사이트에서 사용자의 방문에 관한 정보를 기억하여 다음번에 사이트에 방문했을 때 번거로운 작업을 피하고 더 유용하게 사이트를 활용할 수 있습니다.
2. 세션인증
하지만 쿠키방식의 보안적인 이슈로 인해 세션방식은 유저의 로그인정보 등 민감한 인증 정보를 브라우저가 아닌 서버에서 관리합니다. 하지만 이러한 세션방식도 해커가 세션ID를 탈취하여 클라이언트인척 위장할 수 있다는 한계가 존재하기도 하고, 서버에서 세션 저장소를 사용하므로 요청이 많아지면 서버에 부하가 심해진다는 단점들이 존재합니다.
3. 토큰인증
토큰기반 인증 시스템은 클라이언트가 서버에 접속하면 서버에서 해당 클라이언트에게 인증이 되었다는 의미로 토큰을 부여합니다. 이 토큰은 유일하며 토큰을 발급받은 클라이언트는 또 다시 서버에 요청을 보낼 때 헤어에 토큰을 심어 보내는 식으로 제공한 토큰과의 일치 여부를 체크하여 인증 과정을 처리하게 됩니다.
토큰인증 방식은 토큰 자체에 데이터가 들어있기 때문에 클라이언트에서 위조되었는지만 판별하는 방식이므로 세션방식에 비해 서버의 부담을 덜 수 있다는 장점이 있지만, 쿠키 / 세션 방식과 다르게 토큰 자체의 데이터 길이가 길어서 인증 요청이 많아질수록 네트워크 부하가 심해질 수 있으며 토큰을 탈취당하면 대처하기 어렵다는 단점이 존재합니다.