- 세션 인증 방식
- 사용자의 인증 정보가 서버의 세션 저장소에 저장되는 방식.
- 사용자가 로그인을 하면 해당 정보를 서버 세션 저장소에 저장하고 사용자에게는 세션 저장소의 식별자로 세션 id 를 발급한다.
- 인증 이후 매 요청마다 쿠키에 세션 id를 담아서 요청한다. 서버는 세션 id 에 해당하는 정보가 세션 저장소에 있으면 인증된 사용자로 판단한다.
- 토큰 인증 방식
- 토큰 인증 방식은 인증 정보를 클라이언트 측에서 가지고 있는 방식임.
- 인증 정보가 브라우저의 로컬 스토리지에 저장됨.
- 사용자가 가지고 있는 토큰을 http 헤더의 Authorization에 담아 보낸다. 서버는 이 헤더를 확인 후 토큰이 위변조, 만료되었는지 확인하고 판단한다.
- 세션 인증 방식 vs 토큰 인증 방식
- 안전성
- 세션의 경우 모든 정보를 서버에서 관리하기 때문에 비교적 더 안전함. 세션 id 가 유출되었어도 서버측에서 해당 세션을 무효로 만들면 됨.
- 토큰은 클라이언트가 모든 정보를 가지고 있으므로 토큰이 탈취되면 만료되기까지 피해를 입음.
- 확장성
- 세션 인증 방식은 scale out 에 불리함. 여러 대의 서버를 이용하기 때문에 세션이 불일치하는 문제가 생길 수 있음.
- 토큰 인증 방식은 클라이언트가 정보를 가지고 있기에 불일치에 자유로움.