사용자의 로그인 상태를 서버에서 처리하는데 사용할수있는 대표적인 두가지 인증방식이있다.

 

1. 세션을 기반으로 인증

2. 토큰을 기반으로 인증

 

 

1. 세션 기반 인증 시스템

세션을 기반으로 인증 시스템을 만든다는것은 서버가 사용자가 로그인중임을 기억하고 있다는 뜻이다.

 

 

직접그려서 글씨체가 이상한건 양해....

 

 

세션 기반 인증시스템에서 사용자가 로그인을 하면, 서버는 세션 저장소에 사용자의 정보를 조회하고 세션 id를 발급한다

발급된 id는 주로 브라우저의 쿠키에 저장한다. 그다음에 사용자가 다른 요청을 보낼때마다 서버는 세션 저장소에서

세션을 조회한후 로그인 여부를 결정하여 작업을 처리하고 응답을 한다

 

세션 기반 인증의 단점은 서버를 확장하기가 번거로워 질 수 있다는 점이다.

만약 서버의 인스턴스가 여러개가 된다면, 모든 서버끼리 같은 세션을 공유해야 하므로 세션 전용 데이터베이스를 만들어야 할 뿐 아니라 신경 써야 할것도 많다.

 

 

 

2. 토큰 기반 인증시스템

토큰은 로그인 이후 서버가 만들어주는 문자열이다. 해당 문자열안에는 사용자의 로그인 정보가 있고, 해당정보에는 서버에서 발급되었음을 증명하는 서명이 들어있다.

 

서버에서 만들어준 토큰은 해싱 알고리즘을 통해 만들어진 서명이있기때문에 무결성이 보장된다.

사용자가 로그인을 하면 서버에서 사용자에게 해당 사용자의 정보를 지니고 있는 토큰을 발급해주고, 그러면 서버는 해당 토큰이 유효한지 검사하고, 결과에 따라 작업을 처리하고 응답한다.

사용자 쪽에서 로그인 상태를 지닌 토큰을 가지고있으므로 서버의 확장성이 매우 높다.

서버의 인스턴스가 여러개 늘어나도 서버끼리 사용자의 로그인 상태를 공유 하고 있을 필요가 없기때문이다.

 

 

 

 

이두가지 기능중에서 우선 토큰 기반 인증 시스템을 사용해보겠다.

구현하기 간편하고 사용자들의 인증 상태를 관리하기 쉽기때문이다.

 

 

 

 

+ Recent posts