인증(Authentication)과 인가(Authorization)의 차이

인증(Authentication)과 인가(Authorization)의 차이

웹 서비스나 서버를 공부하다 보면 인증과 인가라는 용어를 자주 접하게 됩니다. 특히 로그인 시스템을 구현하거나 API 보안을 설계할 때 반드시 이해해야 하는 핵심 개념입니다. 두 단어는 비슷해 보이지만, 의미와 역할은 명확히 다릅니다.

먼저 인증(Authentication)부터 살펴보겠습니다. 인증은 “당신이 누구인가?”를 확인하는 과정입니다. 즉, 사용자의 신원을 검증하는 절차입니다. 우리가 웹사이트에 로그인할 때 아이디와 비밀번호를 입력하는 행위가 바로 인증 과정입니다. 서버는 입력된 정보가 저장된 데이터와 일치하는지 확인하여 해당 사용자가 실제로 그 계정의 소유자인지 판단합니다.

인증 방법에는 여러 가지가 있습니다. 가장 기본적인 방식은 아이디와 비밀번호입니다. 최근에는 보안을 강화하기 위해 2단계 인증(OTP, 문자 인증), 생체 인증(지문, 얼굴 인식), OAuth 기반 소셜 로그인(Google, Kakao, Naver 로그인) 등 다양한 방식이 사용됩니다. 이 모든 방식의 목적은 동일합니다. 사용자의 신원을 확인하는 것입니다.

반면 인가(Authorization)는 “무엇을 할 수 있는가?”를 결정하는 과정입니다. 인증이 완료된 후, 해당 사용자가 어떤 자원에 접근할 권한이 있는지 판단합니다. 예를 들어 관리자 계정은 모든 게시글을 삭제할 수 있지만, 일반 사용자는 자신의 게시글만 삭제할 수 있도록 제한할 수 있습니다. 이것이 바로 인가입니다.

즉, 인증은 신원을 확인하는 것이고, 인가는 권한을 확인하는 것입니다.

이 둘의 관계를 순서로 정리하면 다음과 같습니다.
1단계: 인증 – 사용자가 누구인지 확인
2단계: 인가 – 그 사용자가 무엇을 할 수 있는지 결정

인증이 되지 않은 사용자는 인가 단계로 넘어갈 수 없습니다. 예를 들어 로그인하지 않은 사용자는 관리자 페이지에 접근할 수 없습니다. 로그인에 성공해도 일반 사용자라면 관리자 기능을 사용할 수 없습니다.

비유를 들어보면 이해하기 쉽습니다. 회사 건물에 들어갈 때 신분증을 제시하는 것이 인증입니다. 신분증을 통해 직원인지 방문객인지 확인합니다. 그리고 회의실, 서버실, 연구실 등 특정 공간에 들어갈 수 있는 권한을 부여받는 것이 인가입니다. 신분은 같더라도 직급이나 역할에 따라 접근 가능한 공간이 다릅니다.

웹 개발에서는 이 개념이 매우 중요합니다. 예를 들어 REST API 서버를 만든다고 가정해봅시다. /admin/users 삭제 API가 있다고 할 때, 서버는 먼저 사용자가 로그인했는지(인증)를 확인합니다. 그 다음 해당 사용자가 관리자 권한을 가지고 있는지(인가)를 확인합니다. 이 두 단계를 모두 통과해야 요청이 처리됩니다.

기술적으로는 인증 후에 토큰이나 세션이 발급됩니다. 예를 들어 JWT(JSON Web Token)를 사용하면, 로그인 성공 시 서버가 토큰을 발급합니다. 이후 요청 시 이 토큰을 함께 보내면 서버는 토큰을 검증하여 인증을 확인합니다. 그리고 토큰 안에 포함된 role 정보(예: USER, ADMIN)를 기반으로 인가를 수행합니다.

보안 측면에서도 인증과 인가는 명확히 분리되어야 합니다. 인증이 강력하지 않으면 계정 탈취 위험이 증가합니다. 인가 로직이 잘못 설계되면 권한 상승(Privilege Escalation) 공격이 발생할 수 있습니다. 예를 들어 일반 사용자가 관리자 기능을 실행할 수 있다면 심각한 보안 사고로 이어질 수 있습니다.

대규모 시스템에서는 RBAC(Role-Based Access Control) 같은 방식이 사용됩니다. 이는 사용자에게 역할(Role)을 부여하고, 역할에 따라 권한을 관리하는 방식입니다. 최근에는 ABAC(Attribute-Based Access Control)처럼 사용자 속성, 리소스 속성, 환경 조건 등을 종합적으로 고려하는 방식도 사용됩니다.

정리하자면 인증(Authentication)은 사용자의 신원을 확인하는 과정이고, 인가(Authorization)는 그 사용자가 어떤 행동을 할 수 있는지 결정하는 과정입니다. 인증이 먼저 수행되고, 그 다음 인가가 이루어집니다. 두 개념은 웹 보안의 핵심이며, 로그인 시스템과 API 보안을 설계할 때 반드시 구분해서 이해해야 합니다.

서버와 보안을 공부하는 입문자라면 “인증은 누구인지 확인하는 것, 인가는 무엇을 할 수 있는지 정하는 것”이라는 문장을 반드시 기억해야 합니다. 이 차이를 명확히 이해하는 것이 안전한 시스템 설계의 출발점입니다.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *