server-토큰 기반 인증, 서버 기반 인증(JSON Web Token VS Session,Cookie)
본문 바로가기
CS/네트워크

server-토큰 기반 인증, 서버 기반 인증(JSON Web Token VS Session,Cookie)

by IYK2h 2022. 3. 11.
728x90

서버 기반 인증

서버 측에서 사용자들의 정보를 기억하고 있어야한다. 정보를 기억하기 위해서 세션을 유지해야하는데, 이를 메모리나 디스크 또는 데이터베이스 등을 통해 관리한다. 서버 기반의 인증 시스템은 클라이언트로부터 요청을 받으면, 클라이언트의 상태를 계속해서 유지하며 서비스를 이용한다. 이러한 상태를 Stateful 서버(상태) 라고 한다.

특징

HTTP 프로토콜 요청에 따른 응답을 받으면 연결이 끊어진다.

통신이 종료되면 상태 정보가 남지 않아 Stateful 상태에서 Stateless 상태로 바뀐다.

단점

CORS(Cross-Origin Resource Sharing) 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 여러 도메인에서 관리하기 번거롭다.

확장성이 떨어진다. 서버를 확장하는 과정에서 세션을 분산시키는 작업이 필요한데, 세션을 분산시키는 시스템의 설계과정이 복잡하다.

토큰 기반 인증

세션 기반 인증과는 다르게 서버가 인증한 토큰을 사용자에게 발급하는 방식이다. 사용자가 서버에 요청을 할 때 헤더에 토큰을 함께 보내 유효성 검사를 한다. 토큰 기반 인증 시스템은 사용자의 인증 정보를 서버나 세션에서 유지하는것이 아닌 클라이언트 측에서 토큰과 함께 요청을하는 구조이다. 이러한 상태를 Stateless 서버(구조) 라고 한다.

특징

Stateless 클라이언트의 상태를 계속 유지할 필요가 없고 클라이언트가 가지고 있는 토큰의 인증 유무만 판단하면 된다. 서버와 클라이언트의 연결된 부분이 없기 때문에 서버의 확장이 수월해진다. 세션과 같이 분산 시스템을 설계할 필요가 없다.

쇼셜 계정 이용해 권한 공유 OAuth 를 사용하는 플랫폼을 이용해 API를 사용해 권한을 공유받아 사용 가능하다.

단점

토큰을 탈취 토큰을 localStorage 에 저장을 하게되면 쉽게 탈취당한다. 이러한 보안을 강화하기 위해서 토큰을 쿠키에 넣어 전송한다. 세션과 다른점은 쿠키는 전송수단일 뿐이다. 쿠키를 사용하는 이유는 쿠키를 http only 로 설정한다면 네트워크 통신 상에서만 쿠키가 붙는다. (자바스크립트로 토큰 값에 접근이 불가능)

최근들어 JWT(Json Web Token) 형식을 사용해 토큰 기반 인증을 많이 사용하는 추세이다.

728x90

댓글