네트워크당
인증과 인가의 차이는 무엇인가?
이히당
2025. 7. 12. 19:13
인증 vs. 인가
인증(Authentication): 본인이 누구인지 확인, (로그인)
인가(Authorization): 권한부여 (ADMIN 권한처럼 특정 리소스에 접근할 수 있는 권한, 인증이 있어야 인가가 있음)
상황으로 이해
(신분증 없는 손님에게) "신분증 없이는 못 들어갑니다. 신분증을 보여주세요."
손님이 VIP인지 아닌지(권한)를 확인하기 이전에, 일단 신분증(인증)부터 확인하려는 것이다.
이 상황이 바로 401 Unauthorized
이다.
401 Unauthorized vs. 403 Forbidden (가장 중요한 차이)
이 혼동을 피하려면 403 Forbidden
오류와 비교해야 한다.
구분 | 401 Unauthorized (인증 오류) |
403 Forbidden (인가 오류) |
---|---|---|
의미 | "당신은 누구십니까?" (신원 미확인) | "당신이 누군지는 알지만, 들어갈 권한은 없습니다." (권한 부족) |
상황 | 로그인을 아예 하지 않은 상태 | 로그인은 했지만, 관리자 페이지 등 접근 권한이 없는 리소스에 접근 시도 |
해결책 | 로그인하면 해결될 수 있음 | 로그인해도 해결 안 됨. 관리자에게 권한을 요청해야 함 |
비유 | 신분증이 없어서 입구에서 거절당함 | 일반 회원 신분증으로 VIP 라운지 입장을 거절당함 |
통신 흐름 예시
- 클라이언트:
/mypage
리소스 요청 - 서버: (로그인 정보가 없음을 확인)
401 Unauthorized
응답을 보냄- 이때
WWW-Authenticate
헤더에 "어떻게 인증해야 하는지"(예: Basic, Bearer 등) 방법을 담아 함께 보낸다.
- 이때
- 클라이언트:
WWW-Authenticate
헤더를 보고, 인증 정보(ID/PW, 토큰 등)를Authorization
헤더에 담아 다시 요청 - 서버:
- 인증 정보가 올바르면 →
200 OK
와 함께 리소스를 응답 - 인증 정보가 올바르지만 권한이 없으면 →
403 Forbidden
응답
- 인증 정보가 올바르면 →
질문 기반 정리
질문 : 인증가 인가의 차이가 무엇인가요?
인증은 로그인과 같이 본인이 누구인지 식별하는 과정이고, 인가는 권한의 여부를 확인하는 것입니다.
간단한 예로 백화점 회원 "인증"은 로그인을 통해서 한다면, VIP 회원만 받을 수 있는 혜택은 그에 맞는 인가가 있어야합니다.
여기서 인증에 대한 오류가 있으면 401 Unauthorized
오류를 사용하고 인가에 대한 오류가 있다면 '403 Forbidden` 오류를 사용합니다.
728x90