PaaS 웹앱 개발 시 고려해야되는 항목 중 하나

스케일 아웃과 밀접한 관계가 있는 사용자 세션관리 부분

 

크게 아래와 같이 두가지로 나눠지며

결국 규모가 커짐에 따라 서버 기반의 인증 방식은 한계가 예상되어 왔음

서버인증

전통적인 방식
서버 측에서 사용자들의 정보를 기억
하고 있어야 한다. -> 세션을 저장 유지

메모리나 디스크 또는 데이터베이스 세션저장소에 세션정보 저장
->
메모리의 한계, 데이터베이스 부하?
서버 spec up 혹은 서버 수량 up 필요

세션분산 설계가 필요(복잡)
Sateful 

세션관리에 사용하는 쿠키가 단일/서브 도메인에서만 작동함(CORS)

, 도메인이 여러 개라면 쿠키도 여러 관리 필요

쿠키 자체의 보안 취약점

CORS(Cross Origin Resource Sharing)란 브라우저의 현재 웹 페이지에서 다른 페이지에 있는 자원(Resource)을 뜻한다.

CORS 방식의 기술은 보안에 취약

토큰기반 인증

인증된 사용자에게 토큰을 발급하고, 다음 요청부터는 헤더에 토큰을 같이 요청하도록함
상태유지
안함 Stateless
-> Scale out
용이함
토큰은
클라이언트에 저장됨
토큰환경
취약점 대비 필요(ex. 토큰에 선택적인 권한만 부여하여 저장)
CORS
문제(여러 도메인), 어떤 디바이스건 문제 없음
최근에는
Json 포맷인 JWT 주로 사용 (Json Web Token)
OAuth의 경우 Facebook, Google  이용 로그인도 가능

 

JWT를 static 변수(매번 불러오지 않도록)와 로컬 스토리지에 저장

로그아웃을 할 경우 로컬 스토리지에 저장된 JWT 데이터를 제거

Header, Payload, Signature의 3 부분으로 구성




+ Recent posts