용어 정리

Stateless 서버

  • Stateful 서버
    Client의 상태를 유지하여 이 정보를 서비스 제공에 이용
    Stateful 서버의 예: 세션을 유지하는 웹서버 ex) 유저가 로그인 시, 세션에 로그인이 되었다는 정보 저장
    메모리 또는 데이터베이스 시스템에 담을 수도 있음.
  • Stateless 서버
    Client 상태를 유지하지 않는 것.
    상태 정보를 저장하지 않으면, 서버는 클라이언트측에서 들어오는 요청만으로 작업 처리
    확장성(Scalability)이 높아짐

모바일 어플리케이션에 적합

안전한 API를 만들기 위해 쿠키와 같은 인증 시스템은 이상적이지 않음.

 

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

ex) OAuth token: 소셜 계정들을 이용하여 다른 웹서비스에서도 로그인 가능

 

보안

토큰 기반 인증 시스템은 어플리케이션의 보안을 높힐 수 있음.

 

왜 사용할까? - 서버 기반 인증의 문제점

  • 세션: 유저가 인증을 할 때, 서버는 이 기록을 서버에 저장
    로그인 중인 유저의 수가 늘어난다 => 서버의 램 과부화
  • 확장성
    (확장? 단순히 서버의 사양을 업그레이드 하는것이 아니라, 더 많은 트래픽을 감당하기 위하여 여러개의 프로세스를 돌리거나, 여러대의 서버 컴퓨터를 추가 하는것)
    세션을 사용하면서 분산된 시스템을 설계하는건 불가능한것은 아니지만 과정이 매우 복잡해집
  • CORS(Cross-Origin Resource Sharing)
    세션을 사용하면서 분산된 시스템을 설계하는건 불가능한것은 아니지만 과정이 매우 복잡해짐

토큰 기반 시스템의 작동 원리

  1. 유저가 아이디와 비밀번호로 로그인을 합니다
  2. 서버측에서 해당 계정정보를 검증합니다.
  3. 계정정보가 정확하다면, 서버측에서 유저에게 signed 토큰을 발급해줍니다.
    여기서 signed 의 의미는 해당 토큰이 서버에서 정상적으로 발급된 토큰임을 증명하는 signature 를 지니고 있다는 것입니다
  4. 클라이언트 측에서 전달받은 토큰을 저장해두고, 서버에 요청을 할 때 마다, 해당 토큰을 함께 서버에 전달합니다.
  5. 서버는 토큰을 검증하고, 요청에 응답합니다.

웹서버에서 토큰을 서버에 전달 할 때에는, HTTP 요청의 헤더에 토큰값을 포함시켜서 전달합니다.

 

토큰의 장점

무상태, 확장성, 보안성, 여러 플랫폼 및 도메인, 웹 표준 기반

 

 

 

 

Ref.

https://velopert.com/2350

 

 

'iOS > iOS 기본기' 카테고리의 다른 글

Autolayout & Size classes 정의  (0) 2019.12.22
[iOS] Delegate, Notification, KVO 비교 및 장단점 정리  (0) 2019.12.10
[iOS] Layout - Safe Area  (0) 2019.12.09
[iOS] frame vs. bounds  (0) 2019.12.09
[iOS] int vs NSInteger vs NSNumber  (0) 2019.12.05

+ Recent posts