토큰 기반 인증 시스템은 세션 기반 인증 시스템의 문제점을 해결하기 위해 사용한다.
토큰 기반 인증 시스템은 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청할 때 HTTP Header에 토큰을 함께 보내 유효성을 검사한다.
이러한 시스템에서는 더 이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고, 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다.
즉, 서버 기반 인증 시스템과 달리 상태를 유지하지 않는 Stateless한 구조를 가진다.
토큰 기반 인증 시스템은 아래와 같은 과정으로 동작한다.
- 사용자가 아이디와 비밀번호로 로그인을 수행한다.
- 서버 측에서 해당 정보를 검증한다.
- 정보가 정확하다면 서버 측에서 사용자에게 토큰을 발급한다.
- 클라이언트 측에서 전달받은 토큰을 저장해 두고, 서버에 요청을 할 때마다 해당 토큰을 서버에 함께 전달한다.
- 서버는 토큰을 검증하고, 요청에 응답한다.
토큰 기반 인증의 이점
- 무상태성(Stateless) & 확장성(Scalability)
토큰이 클라이언트 측에 저장되기 때문에 서버는 Stateless하며, 클라이언트와 서버의 연결고리가 없기 때문에 확장하기에 매우 적합하다. 만약 세션 기반 인증 시스템에서는 서버를 확장하는 경우, 해당 사용자는 처음 로그인했던 서버에만 요청을 받도록 설정해야 한다. 하지만 토큰을 사용하면 어떠한 서버로 요청이 와도 상관없다. - 보안
클라이언트가 서버로 요청을 보낼 때 더 이상 쿠키를 전달하지 않으므로, 쿠키 사용에 의한 취약점이 사라지게 된다. 하지만 토큰 환경의 취약점이 존재할 수 있으므로 이에 대비해야 한다. - 여러 플랫폼 및 도메인
세션 기반 인증 시스템의 문제점 중 하나인 CORS를 해결할 수 있다. 토큰을 사용한다면 어떤 디바이스, 도메인에서도 토큰의 유효성 검사를 진행한 후 요청을 처리할 수 있다.
최근에는 Json 포맷을 이용하는 JWT(Json Web Token)을 주로 사용한다.
'CS > 네트워크' 카테고리의 다른 글
Scale Out & Scale Up (0) | 2022.10.05 |
---|---|
JWT (0) | 2022.10.04 |
세션 (Session) (0) | 2022.10.03 |
쿠키 (Cookie) (0) | 2022.10.02 |
웹 통신의 흐름 (0) | 2022.09.29 |