IT지식/Computer Science

세션과 토큰을 이용한 로그인 인증 방식의 장단점

맨땅에헤딩개발자 2025. 1. 15. 23:55

HTTP에 대해 간략히 알아두면 도움이 됩니다.

https://steady-snb.tistory.com/28

 

애플리케이션 계층(HTTP, SSH, FTP, SMTP 등)에 대해 알아보자

HTTP(Hyper Text Transfer Protocol) 서버와 클라이언트 간의 데이터를 주고 받기 위해 설계된 프로토콜입니다.HTTP 통신은 클라이언트(Front-End)와 서버(Back-End)로 나뉘어져 있다.클라이언트가 요청(Request)

steady-snb.tistory.com

 

HTTP의 특징 중 하나인 무상태(Stateless)로 인해 클라이언트와 서버가 데이터를 주고 받을 시 요청이 끝나면

사용자의 정보가 더 이상 남아있지 않습니다.

그렇다면 최초 로그인 후 어떻게 사용자 정보를 보관하여 로그인을 유지할 수 있을까요?

 

1. 세션을 통한 로그인 프로세스

 

- 사용자가 로그인 요청을 서버로 보냅니다.

- 서버는 로그인 요청을 인증하고 세션 정보를 데이터베이스로 전송해 저장합니다.

- 서버는 사용자에게 세션 ID를 포함하는 쿠키를 포함해 사용자에게 응답을 보냅니다.

- 이후 사용자의 모든 요청은 서버로 전송되고, 서버는 클라이언트가 제공한 세션ID가 데이터베이스에

  존재하는지 확인하여 사용자를 인증하며 권한을 부여합니다.

* 세션 기반 인증은 서버 측에서 사용자의 상태를 유지하고 관리합니다.

 

 

 

2. 토큰을 통한 로그인 프로세스

 

- 사용자가 로그인 요청을 서버로 보냅니다

- 서버는 로그인 요청을 승인하고 사용자에게 액세스 토큰을 전송합니다.

- 이 토큰은 사용자를 인증하고 권한을 부여하는데 사용되며, 클라이언트는 모든 요청에서 이 액세스 토큰을

  포함하여 서버로 보냅니다

- 서버는 액세스 토큰을 검증하고, 해당 토큰이 유효하면 사용자를 인증하고 요청을 처리합니다.

- 토큰은 일반적으로 JWT(JSON Web Token) 형식으로 사용되며, 클라이언트는 토큰을 디코딩하여 사용합니다.

* 토큰 기반 인증은 클라이언트 측에서 사용자의 상태를 관리하는 방식입니다.

 

 

 

 

세션방식와 토큰방식의 차이점

 

- 먼저 세션은 서버를 통해 로그인 정보를 관리하는 만큼 토큰방식보다 서버에 부하가 큽니다.

  하지만 토큰은 클라이언트에서 모든 정보를 관리하는 만큼 네트워크와 통신 과정에서

  걸리는 부하 즉 세션보다 많은 양의 트래픽을 사용합니다.

 

- 토큰의 경우 클라이언트가 모든 인증정보를 담고있다보니 해킹 발생 시 토큰 무효화까지 피해가 큽니다.

  하지만 세션의 경우 모든 인증 정보를 서버에서 관리하기 때문에 토큰 방식보다 보안 측면에서 조금 더 유리하다.

 

그럼에도 불구하고 최근 토큰 기반의 인증을 사용하는 이유는 확장성입니다.

사용자가 많아 서버가 여러대로 분산된 환경일 경우 서버에서 정보를 관리하다 보면 각 서버마다 사용자 정보를 가지고

있어야 하는 번거로움이 발생하는데 클라이언트가 정보를 가지게되면 어느 서버로 접속하든 사용자 인증이 가능해집니다.