인증과 인가

  • 서버 개발에서 가장 기본적 보안은 인증(authentication)과 인가(authorization)이다.
    • 인증은 사용자가 누구인지 확인 하는 과정
    • 인가는 사용자에게 자원에 접근할 수 있는 권한을 부여

인증과 토큰

  • 아이디와 암호를 입력하는 로그인은 인증의 한 형태.
  • 보안 강화 위해 2단계 인증(Two-Factor Authentication, 2FA) 을 쓰기도함.
  • 사용자가 누구인지 확인되면 서버는 클라에 문자열로된 토큰 제공.
  • 클라는 이후 각 요청마다 이 토큰 함께보내 자신이 누구인지 증명함.
  • 서버는 사용자 인증이 필요한 기능에 대해 매번 아이디와 암호를 입력받지 않고, 토큰 사용해서 사용자를 식별.

인가와 접근 제어 모델

  • 인증과 토큰이 사용자가 누구고 정상적으로 접근하는지 확인하는 역할이라면...
  • 인가는 사용자가 요청한 기능을 권한이 있는지 확인하는 역할을 함.
  • 접근 제어의 기본은 접근한 사용자를 토큰이나 세션으로 식별하는 것
  • 사용자가 접근할 수 있는 기능(또는 자원)을 관리하기 위한 모델을 접근 제어(Access Control)모델 이라 한다.
  • 대표적인 접근 제어 모델로는 역할 기반 접근 제어(RBAC, Role-Based Access Model)이 있음.
  • RBAC은 역할별로 실행가능한 기능 집합 할당하고, 사용자에게는 이 역할을 부여함.
  • 역할은 허용된 기능 집합 가진다.
  • 사용자에게는 역할을 부여한다.