[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

서버기반 인증시스템과 토큰기반 인증 시스템

inu 2021. 2. 3. 17:06
반응형

서버기반 인증시스템

원리

  • 서버측에서 사용자들의 정보를 기억하고 관리한다.
  • 메모리나 디스크, 데이터베이스 등에 세션정보를 유지한다.
  • 클라이언트에게 요청을 받으면 세션의 상태를 유지하고 해당 정보를 서비스에 이용한다. 이를 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