Authentication, Authorization 차이
- Authentication (인증): 본인이 누구인지 확인하는 과정
- 예: 로그인 (아이디/비밀번호 입력, OAuth 인증 등)
- 실패하면 401 Unauthorized
- Authorization (인가): 인증된 사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 과정
- 예: 권한 체크
- 실패하면 403 Forbidden
Unauthorized, Forbidden 차이
- 401 Unauthorized: 인증되지 않음 (로그인 필요)
- 사용자가 로그인을 안 했거나, 토큰이 유효하지 않을 때 발생
- 예: 로그인하지 않은 상태에서 API 요청
- 403 Forbidden: 인가되지 않음 (권한 없음)
- 사용자가 로그인은 했지만 해당 리소스에 대한 접근 권한이 없을 때 발생
- 예: 일반 사용자가 관리자 페이지에 접근 시도
✅ 401 Unauthorized → "누구인지 모름 (로그인 필요)"
✅ 403 Forbidden → "누군지는 알지만 권한 없음"
참고
Authorization이 인가이기 때문에 401 Unauthorized는 인가되지 않음 (= 권한 없음) 이라고 해야 할 것 같지만
역사적으로 인가 되지 않은 상태에 대해서는 Forbidden을 부여한다고 한다.