Web

인증(Authentication)과 인가(Authorization)

TedDev 2024. 9. 3. 22:51
728x90

웹 개발에서 "인증"과 "인가"는 보안 시스템의 핵심 요소다. 두 개념은 비슷해 보이지만, 서로 다른 목적을 가지고 있으며, 다양한 웹 애플리케이션 및 시스템에서 사용된다.

 

1. 인증 (Authentication)

인증은 사용자가 자신이 주장하는 사람임을 확인하는 과정이다. 즉, 인증은 "누구인가?"에 대한 질문에 답하는 과정이다. 주로 사용자가 시스템에 접근하려 할 때 이루어지며, 이를 통해 사용자가 제공하는 정보가 등록된 사용자 정보와 일치하는지 확인한다.

인증의 방법

  • 비밀번호 기반 인증 : 가장 일반적인 형태로, 사용자 이름과 비밀번호를 요구한다. 비밀번호가 시스템에 저장된 것과 일치하면 사용자가 인증된다.
  • 다중 인증 (MFA, Multi-Factor Authentication) : 비밀번호 외에 추가적인 인증 요소를 요구하는 방법이다. 예를 들어, OTP(일회용 비밀번호), SMS 코드, 생체 인식(지문, 얼굴 인식) 등이 사용될 수 있다.
  • 생체 인증 : 지문, 얼굴 인식, 음성 인식 등 생체적 특징을 이용한 인증 방법이다.
  • 소셜 로그인 : Facebook, Google, Twitter 등의 소셜 미디어 계정을 이용해 인증하는 방식이다.
  • SSO (Single Sign-On) : 한 번의 인증으로 여러 애플리케이션이나 서비스에 접근할 수 있게 하는 방법이다. 주로 기업 환경에서 사용되며, OAuth, SAML 등의 프로토콜을 사용한다.

 

2. 인가 (Authorization)

인가는 사용자가 인증된 후, 해당 사용자가 특정 리소스나 기능에 접근할 수 있는 권한이 있는지를 확인하는 과정이다. 즉, 인가는 "무엇을 할 수 있는가?"에 대한 질문에 답하는 과정이다. 인증이 "누구인가?"를 확인하는 것이라면, 인가는 "무엇을 할 수 있는가?"를 확인하는 것이다.

인가의 방법

  • 역할 기반 접근 제어 (RBAC, Role-Based Access Control) : 사용자에게 특정 역할(예: 관리자, 편집자, 뷰어 등)을 부여하고, 역할에 따라 권한을 부여하는 방식이다. 이는 관리가 용이하고, 조직 내 다양한 직무에 따른 권한 설정이 용이하다.
  • 속성 기반 접근 제어 (ABAC, Attribute-Based Access Control) : 사용자의 속성(예: 부서, 직급, 위치 등)과 리소스의 속성을 기반으로 접근 권한을 부여하는 방식이다. 보다 정교한 정책을 설정할 수 있으며, 다양한 조건에 따른 접근 제어가 가능하다.
  • 정책 기반 접근 제어 (PBAC, Policy-Based Access Control) : 정책에 따라 접근을 제어하는 방식으로, 조건에 따라 매우 유연하게 접근 권한을 설정할 수 있다. 주로 클라우드 환경에서 사용된다.

 

인증과 인가의 차이점

구분 인증 (Authentication) 인가 (Authorization)
목적 사용자의 신원 확인 사용자가 접근할 수 있는 리소스 및 작업 결정
질문 "누구인가?" "무엇을 할 수 있는가?"
예시 사용자 이름과 비밀번호 확인, OTP 인증 관리자만 접근 가능한 페이지 제한
순서 인가 이전에 수행됨 인증 이후에 수행됨
관련 기술 비밀번호, 생체 인식, SSO, OAuth RBAC, ABAC, PBAC

 

 

인증과 인가의 결합

웹 애플리케이션에서는 일반적으로 인증과 인가를 결합하여 사용한다. 예를 들어, 사용자가 로그인 페이지를 통해 인증을 마친 후, 관리 페이지에 접근하려 할 때 관리자의 권한이 있는지(인가)를 확인하는 방식이다.

  • OAuth 2.0 : 소셜 로그인이나 API 접근 시 자주 사용되는 프로토콜로, 인증과 인가 모두를 처리할 수 있다. 사용자가 소셜 계정으로 로그인(인증)하면, 해당 사용자의 특정 리소스에 대한 접근 권한(인가)을 제어할 수 있다.
  • JWT (JSON Web Token) : 클라이언트와 서버 간의 인증 및 인가 정보를 안전하게 전송하기 위해 사용되는 JSON 기반의 웹 토큰이다. 인증 정보가 토큰에 포함되어 있으며, 인가 정보 또한 담길 수 있다.

 

이러한 개념을 이해하고 구현하는 것은 웹 애플리케이션의 보안성을 강화하고, 사용자 데이터를 보호하는데 매우 중요하다.

반응형

'Web' 카테고리의 다른 글

HTTP 요청-응답 흐름의 개요  (1) 2024.09.12
API vs Library vs Framework  (0) 2024.09.09
TCP와 UDP  (0) 2024.09.06
OAuth 2.0의 개념과 동작방식  (0) 2024.09.04
RESTful  (0) 2024.08.30