세션 기반 인증
- 사용자가 로그인 페이지에 접속하여 ID와 비밀번호를 입력합니다.
- 서버는 입력된 정보를 검증하고, 인증되면 해당 사용자에 대한 정보를 가지고 세션ID를 발급합니다. 세션ID는 서버에 저장됩니다.
- 세션ID는 사용자의 브라우저 쿠키에 저장되어, 사용자는 다른 요청을 보낼 때마다 세션ID를 함께 보냅니다.
- 서버는 세션ID를 받아 해당 사용자의 정보를 가져와 요청에 대한 응답을 보냅니다.
- 사용자가 로그아웃하면 세션ID는 삭제됩니다.
장점
- 서버에서 세션에 대한 정보를 저장할 수 있어, 로그인된 사용자에 대한 추가적인 정보를 저장하거나 관리하기에 용이합니다.
단점
- 서버에서 세션 정보를 유지하기 위해 자원이 많이 필요합니다.
- 사용자가 로그아웃하지 않은 경우에는 서버의 부하를 일으킬 수 있습니다.
토큰 기반 인증
- 사용자가 로그인 페이지에 접속하여 ID와 비밀번호를 입력합니다.
- 서버는 입력된 정보를 검증하고, 인증되면 해당 사용자에 대한 정보를 가지고 토큰을 발급합니다. 토큰은 서버에 저장되지 않고, 사용자의 브라우저 쿠키에 저장됩니다.
- 사용자는 다른 요청을 보낼 때마다 토큰을 함께 보냅니다.
- 서버는 토큰을 받아 해당 사용자의 정보를 가져와 요청에 대한 응답을 보냅니다.
- 사용자가 로그아웃하면 토큰은 삭제됩니다.
장점
- 세션 방식과 달리 서버에서 세션 정보를 유지하기 위한 자원이 필요하지 않아, 서버 부하를 줄일 수 있습니다.
- 토큰은 유효기간이 있으며, 만료되면 재발급을 받아야 하므로 보안성이 높습니다.
단점
- 토큰을 저장하는 쿠키가 탈취될 경우, 해당 사용자의 정보에 대한 접근이 가능해집니다.
세션 방식 로그인 | 토큰 방식 로그인 | |
동작 방식 | 서버 측에서 세션 정보를 저장하고 이를 기반으로 인증 | 클라이언트 측에서 액세스 토큰을 저장하고 이를 기반으로 인증 |
자원 사용량 | 서버 측에서 세션 정보를 관리해야함 | 클라이언트 측에서 액세스 토큰을 관리함 |
보안성 | 쿠키 혹은 세션 ID가 탈취될 경우 보안이 취약함 | 액세스 토큰이 탈취될 경우 보안이 취약함 |
적용 분야 | 브라우저 환경과 같이 단일 클라이언트에서 인증이 필요한 경우 | 모바일 애플리케이션과 같이 다양한 디바이스에서 인증이 필요한 경우 |
댓글