Day 39 · 1/5
🌿 중급 백엔드

401과 403 에러의 차이

쉽게 이해하기

건물에 들어가려는데 401은 '신분증을 보여주세요'라고 막히는 거고, 403은 '신분증은 확인했는데 이 층은 출입 금지예요'라고 막히는 거예요. 둘 다 못 들어가지만 이유가 달라요.

핵심 정리

인증 실패와 권한 부족을 구분하는 두 가지 HTTP 상태 코드예요.

자세히 알아보기

API를 만들다 보면 사용자의 요청을 거부해야 할 때가 있어요. 이때 401과 403 중 어떤 상태 코드를 보낼지 혼란스러울 수 있는데요, 두 코드는 명확한 차이가 있어요. 401 Unauthorized는 '인증이 필요하다'는 뜻이에요. 로그인하지 않았거나, 토큰이 만료되었거나, 토큰이 유효하지 않을 때 사용해요. 즉, '당신이 누구인지 모르겠으니 먼저 신원을 밝혀주세요'라는 의미죠. 클라이언트는 이 응답을 받으면 보통 로그인 페이지로 리다이렉트하거나 토큰을 갱신해요. 403 Forbidden은 '인증은 됐지만 권한이 없다'는 뜻이에요. 로그인은 되어 있지만, 해당 리소스에 접근할 권한이 없을 때 사용해요. 예를 들어 일반 사용자가 관리자 전용 API를 호출하거나, 다른 사용자의 개인정보를 조회하려 할 때 403을 반환해요. '당신이 누구인지는 알지만, 이건 볼 수 없어요'라는 의미죠. 실무에서는 이 차이를 정확히 구분해야 클라이언트가 적절하게 대응할 수 있어요. 401이면 재로그인을 시도하고, 403이면 사용자에게 '권한이 없습니다'라는 메시지를 보여줘야 하니까요. API 설계 시 인증(Authentication)과 인가(Authorization)를 명확히 구분하는 것이 중요해요.