반응형
서버기반 인증시스템
원리
- 서버측에서 사용자들의 정보를 기억하고 관리한다.
- 메모리나 디스크, 데이터베이스 등에 세션정보를 유지한다.
- 클라이언트에게 요청을 받으면 세션의 상태를 유지하고 해당 정보를 서비스에 이용한다. 이를
Stateful 서버
라고 한다.
단점
- 세션의 사용량이 많아질 경우 서버컴퓨터의 메모리 혹은 데이터베이스에 무리를 줄 수 있다.
- 서버를 확장할 때 세션을 분산시키는 시스템을 설계하기 어려워 확장에 방해가 된다.
- 세션의 기반이 되는 쿠키는 단일 도메인 및 서브 도메인에서만 작동하기 때문에 여러 도메인에서 관리하기 어렵다.
토큰기반 인증시스템
원리
- 서버 기반 시스템의 단점을 극복하기 위해 등장했다.
- 인증받은 사용자에게 토큰을 발급하고, 서버에 요청할 때 헤더에 토큰을 함께 보내 유효성검사를 한다.
- 인증정보를 서버 세션에 유지하지 않기 때문에 상태를 유지할 필요가 없다. 이를
Stateless 서버
라고 한다. - 사용자가 로그인을 하면 한번만 서버에서 검증후 토큰을 발급하고, 이후 요청에서 클라이언트는 해당 토큰(Signed 토큰)을 헤더에 함께 보내 이것만을 검증하도록 하는 것이다.
장점
- 무상태성으로 인한 확장성 : 사용자 상태가 서버에 따로 저장되지 않기 때문에 이를 고려하지 않고 서버를 확장할 수 있다.
- 확장성 : 토큰에 특정 권한만 부여해서 발급할수도 있고, 토큰을 기반으로 다른 웹서비스에도 로그인할 수 있다. (OAuth)
- 플랫폼 및 도메인 다양성 : 서비스의 규모가 커짐에 따라 여러 디바이스 및 서비스를 제공하게 될 경우에도 토큰을 사용하면 해당 토큰의 유효성 검사만으로 요청을 처리할 수 있게 된다.
참고 : https://velopert.com/2350 / https://mangkyu.tistory.com/55
반응형
'🛠 기타 > WEB' 카테고리의 다른 글
Node.js - bcrypt (0) | 2021.02.04 |
---|---|
JWT (JSON Web Token) (0) | 2021.02.03 |
Node.js - Passport.js 기초 (0) | 2021.02.03 |
Node.js - session (0) | 2021.02.02 |
Node.js - cookie (0) | 2021.02.02 |