토큰 기반 인증

Published: by Creative Commons Licence

토큰 기반 인증

토큰 기반 인증 시스템 사용 이유

1. Stateless 서버

  • Stateful
    • 클라이언트에게 요청을 받을 때마다, 클라이언트의 상태를 계속해서 유지하고, 이 정보를 서비스에 제공한다.
  • Stateless
    • 상태를 유지 하지 않는다. 오직 클라이언트측에서 들어오는 요청만 처리한다.
    • 상태가 없는 경우, 클라이언트와 서버의 연결고리가 없기 때문에 확장성이 높아진다.

2. 모바일 어플리케이션에 적합하다.

3. 인증정보를 다른 어플리케이션으로 전달

4. 보안

서버 기반 인증

기존의 인증 시스템은 서버측에서 유저들의 정보를 기억하고 있어야 한다. 세션을 유지하기 위해서는 다양한 방법이 사용된다. 메모리/디스크/데이터베이스 시스템이 이 정보들을 저장한다.

서버 기반 인증은 여러 문제를 보이기 시작했다.

  1. 확장성
    • 세션을 사용하면 서버를 확장하는것이 어렵다. 세션을 사용하면 분산된 시스템을 설계하는 것은 아니지만 과정이 매우 복잡해진다.
    • DB에 저장하게 될 경우, DB 부하를 야기할 수 있다.
  2. CORS
    • 웹 어플리케이션에서 세션을 관리 할 때 자주 사용되는 쿠키는 단일 도메인 및 서브 도메인에서반 작동하도록 설계되어있다. 따라서 쿠키를 여러 도메인에서 관리하는것은 번거롭다.
  3. 웹/앱간의 상이한 쿠키-세션 처리 로직

토큰의 장점

1. 무상태이며 확장성(Scalability)이 있다.

2. 보안성

3. 확장성(Extensibility)

  • Extensibility는 Scalability의 확장성과는 다른 의미
    • Scalability : 서버의 확장성을 이야기 (분산 서비스 환경)
    • Extensibility : 로그인 정보가 사용되는 분야를 확장
      • 토큰을 사용하여 다른 서비스에서도 권한을 공유 할 수 있다.
      • Facebook, LinkedIn, Github 계정으로 로그인을 하여 다른 시스템에서 사용할수 있음을 의미

4. 여러 플랫폼 및 도메인

  • 토큰을 사용하면 어떤 디바이스든, 어떤 도메인이든, 토큰만 유효하다면 요청이 정상적으로 처리.

출처