HTTP에 대해 간략히 알아두면 도움이 됩니다.
https://steady-snb.tistory.com/28
HTTP의 특징 중 하나인 무상태(Stateless)로 인해 클라이언트와 서버가 데이터를 주고 받을 시 요청이 끝나면
사용자의 정보가 더 이상 남아있지 않습니다.
그렇다면 최초 로그인 후 어떻게 사용자 정보를 보관하여 로그인을 유지할 수 있을까요?
1. 세션을 통한 로그인 프로세스
- 사용자가 로그인 요청을 서버로 보냅니다.
- 서버는 로그인 요청을 인증하고 세션 정보를 데이터베이스로 전송해 저장합니다.
- 서버는 사용자에게 세션 ID를 포함하는 쿠키를 포함해 사용자에게 응답을 보냅니다.
- 이후 사용자의 모든 요청은 서버로 전송되고, 서버는 클라이언트가 제공한 세션ID가 데이터베이스에
존재하는지 확인하여 사용자를 인증하며 권한을 부여합니다.
* 세션 기반 인증은 서버 측에서 사용자의 상태를 유지하고 관리합니다.
2. 토큰을 통한 로그인 프로세스
- 사용자가 로그인 요청을 서버로 보냅니다
- 서버는 로그인 요청을 승인하고 사용자에게 액세스 토큰을 전송합니다.
- 이 토큰은 사용자를 인증하고 권한을 부여하는데 사용되며, 클라이언트는 모든 요청에서 이 액세스 토큰을
포함하여 서버로 보냅니다
- 서버는 액세스 토큰을 검증하고, 해당 토큰이 유효하면 사용자를 인증하고 요청을 처리합니다.
- 토큰은 일반적으로 JWT(JSON Web Token) 형식으로 사용되며, 클라이언트는 토큰을 디코딩하여 사용합니다.
* 토큰 기반 인증은 클라이언트 측에서 사용자의 상태를 관리하는 방식입니다.
세션방식와 토큰방식의 차이점
- 먼저 세션은 서버를 통해 로그인 정보를 관리하는 만큼 토큰방식보다 서버에 부하가 큽니다.
하지만 토큰은 클라이언트에서 모든 정보를 관리하는 만큼 네트워크와 통신 과정에서
걸리는 부하 즉 세션보다 많은 양의 트래픽을 사용합니다.
- 토큰의 경우 클라이언트가 모든 인증정보를 담고있다보니 해킹 발생 시 토큰 무효화까지 피해가 큽니다.
하지만 세션의 경우 모든 인증 정보를 서버에서 관리하기 때문에 토큰 방식보다 보안 측면에서 조금 더 유리하다.
그럼에도 불구하고 최근 토큰 기반의 인증을 사용하는 이유는 확장성입니다.
사용자가 많아 서버가 여러대로 분산된 환경일 경우 서버에서 정보를 관리하다 보면 각 서버마다 사용자 정보를 가지고
있어야 하는 번거로움이 발생하는데 클라이언트가 정보를 가지게되면 어느 서버로 접속하든 사용자 인증이 가능해집니다.
'IT지식 > Computer Science' 카테고리의 다른 글
HTTP메서드 GET, POST의 정의 및 차이점에 대해 알아보자 (0) | 2025.01.18 |
---|---|
HTTP 상태 코드(1XX~5XX)에 대해 알아보자. (0) | 2025.01.16 |
로컬 스토리지, 세션 스토리지, 쿠키의 정의와 차이점 (0) | 2025.01.14 |
공인IP와 사설IP 그리고 NAT에 대해 알아보자 (0) | 2025.01.12 |
IP 클래스리스와 서브넷마스크(Subnet Mask), 서브네팅(Subneting)에 대해 알아보자 (0) | 2025.01.12 |