인증과 인가
- 서버 개발에서 가장 기본적 보안은 인증(authentication)과 인가(authorization)이다.
- 인증은 사용자가 누구인지 확인 하는 과정
- 인가는 사용자에게 자원에 접근할 수 있는 권한을 부여
인증과 토큰
- 아이디와 암호를 입력하는 로그인은 인증의 한 형태.
- 보안 강화 위해 2단계 인증(Two-Factor Authentication, 2FA) 을 쓰기도함.
- 사용자가 누구인지 확인되면 서버는 클라에 문자열로된 토큰 제공.
- 클라는 이후 각 요청마다 이 토큰 함께보내 자신이 누구인지 증명함.
- 서버는 사용자 인증이 필요한 기능에 대해 매번 아이디와 암호를 입력받지 않고, 토큰 사용해서 사용자를 식별.
인가와 접근 제어 모델
- 인증과 토큰이 사용자가 누구고 정상적으로 접근하는지 확인하는 역할이라면...
- 인가는 사용자가 요청한 기능을 권한이 있는지 확인하는 역할을 함.
- 접근 제어의 기본은 접근한 사용자를 토큰이나 세션으로 식별하는 것
- 사용자가 접근할 수 있는 기능(또는 자원)을 관리하기 위한 모델을 접근 제어(Access Control)모델 이라 한다.
- 대표적인 접근 제어 모델로는 역할 기반 접근 제어(RBAC, Role-Based Access Model)이 있음.
- RBAC은 역할별로 실행가능한 기능 집합 할당하고, 사용자에게는 이 역할을 부여함.
- 역할은 허용된 기능 집합 가진다.
- 사용자에게는 역할을 부여한다.