개요
서비스에서 사용자의 신원을 검증하고 식별된 사용자에 맞춰 서비스를 제공하기 위해서는 별도의 검증 프로세스가 필요하다.
예를 들어 아이디, 패스워드를 입력해서 사용자가 서비스에 가입된 유저인지 검증하는 로그인 기능이 그 예시이다.
서비스에서 이러한 절차를 인증/인가 방식이라고 한다.
인증(Authentication):
- 신원을 확인하는 프로세스를 말함
- 사용자가 특정 시스템에 로그인하거나 특정 서비스에 접근할 때, 실제 유저인지 인증하는 개념
- EX) 핸드폰 본인인증, ID, PW를 통한 로그인 행위
인가(Authorization):
- 인증된 사용자가 특정 리소스에 대한 접근 권한을 부여받는 개념
- 사용자가 접근 가능한 작업의 범위를 결정
- EX) 관리자 권한으로 실행, 파일 시스템 접근 여부
정리하면 인증은 사용자의 신원을 확인하는 과정이며, 인가는 사용자가 특정 리소스에 접근할 수 있는지의 여부를 결정하는 과정이라고 볼 수 있다.
현대적인 온라인 서비스들은 대부분 인증과 인가를 기반으로 운영된다. 또한 대부분의 웹/앱 서비스들은 HTTP 프로토콜을 사용하여 통신한다. HTTP 프로토콜은 비연결성(Connectionless), 무상태(Stateless)의 특징을 지니기 때문에, 최초 로그인을 한 이후 서버에서 클라이언트에 이전 상태를 기억하고 있지 않다.
비연결성(Connectionless):
- 서버와 클라이언트가 연결되어 있지 않은 상태
- 클라이언트가 서버에 요청을 보내면 서버에서 응답을 보내고 연결을 닫는 행위
무상태(Stateless):
- 서버가 클라이언트의 상태를 기억하지 않고 각 요청을 독립적으로 처리하는 행위
그렇기 때문에 로그인 페이지에서 인증 절차를 거치고 다음 페이지로 넘어갔을 때, HTTP 프로토콜의 특징(비연결성, 무상태)으로 인해, 매번 페이지를 변경할 때마다 로그인을 해야 되는 불편함이 있다.
Connectionless, Stateless한 HTTP 프로토콜에서 서비스를 운영하기 위해서는 쿠키, 세션, 토큰 같은 방식을 사용해서 인증/인가를 구현할 수 있다.
다음 포스팅에서는 인증/인가를 구현하는 방식인 쿠키, 세션, 토큰 에 대해서 알아보겠다.
'Server' 카테고리의 다른 글
[node] Ubuntu20.04에 node LTS install (0) | 2023.10.28 |
---|