🌿 중급 백엔드
인증과 인가의 차이
쉽게 이해하기
공항 보안 검색대를 생각해보세요. 신분증으로 '당신이 티켓 소유자인지' 확인하는 게 인증이고, 티켓의 좌석 등급에 따라 '비즈니스 라운지에 들어갈 수 있는지' 결정하는 게 인가입니다.
핵심 정리
인증은 '누구인지' 확인하고, 인가는 '무엇을 할 수 있는지' 결정합니다.
자세히 알아보기
인증(Authentication)과 인가(Authorization)는 보안에서 자주 혼동되는 개념이지만 명확히 다릅니다. 인증은 사용자가 누구인지 확인하는 과정이고, 인가는 인증된 사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 과정입니다.
예를 들어 쇼핑몰 웹사이트에 로그인하는 것이 인증입니다. 이메일과 비밀번호로 '당신이 회원인지' 확인하죠. 로그인 후 관리자 페이지에 접근하려고 할 때, 시스템이 '당신이 관리자 권한이 있는지' 확인하는 것이 인가입니다.
실무에서는 인증 후에 토큰을 발급하고, 이후 요청마다 토큰을 검사해 인증 상태를 유지합니다. 인가는 역할(Role) 기반으로 구현하는 경우가 많아요. 사용자를 '일반 회원', '프리미엄 회원', '관리자'로 나누고, 각 역할마다 접근 가능한 기능을 다르게 설정합니다.
API를 설계할 때 두 개념을 명확히 구분해야 합니다. 모든 요청에서 인증을 먼저 확인하고, 그다음 해당 리소스에 대한 인가를 검사하는 순서로 진행합니다. 이렇게 하면 보안이 강화되고, 사용자별로 다른 경험을 제공할 수 있습니다.