네트워크당

인증과 인가의 차이는 무엇인가?

이히당 2025. 7. 12. 19:13

인증 vs. 인가

인증(Authentication): 본인이 누구인지 확인, (로그인)
인가(Authorization): 권한부여 (ADMIN 권한처럼 특정 리소스에 접근할 수 있는 권한, 인증이 있어야 인가가 있음)

상황으로 이해

(신분증 없는 손님에게) "신분증 없이는 못 들어갑니다. 신분증을 보여주세요."

 

손님이 VIP인지 아닌지(권한)를 확인하기 이전에, 일단 신분증(인증)부터 확인하려는 것이다.

이 상황이 바로 401 Unauthorized이다.

 

401 Unauthorized vs. 403 Forbidden (가장 중요한 차이)

이 혼동을 피하려면 403 Forbidden 오류와 비교해야 한다.

구분 401 Unauthorized (인증 오류) 403 Forbidden (인가 오류)
의미 "당신은 누구십니까?" (신원 미확인) "당신이 누군지는 알지만, 들어갈 권한은 없습니다." (권한 부족)
상황 로그인을 아예 하지 않은 상태 로그인은 했지만, 관리자 페이지 등 접근 권한이 없는 리소스에 접근 시도
해결책 로그인하면 해결될 수 있음 로그인해도 해결 안 됨. 관리자에게 권한을 요청해야 함
비유 신분증이 없어서 입구에서 거절당함 일반 회원 신분증으로 VIP 라운지 입장을 거절당함
     

 

 

통신 흐름 예시

  1. 클라이언트: /mypage 리소스 요청
  2. 서버: (로그인 정보가 없음을 확인) 401 Unauthorized 응답을 보냄
    • 이때 WWW-Authenticate 헤더에 "어떻게 인증해야 하는지"(예: Basic, Bearer 등) 방법을 담아 함께 보낸다.
  3. 클라이언트: WWW-Authenticate 헤더를 보고, 인증 정보(ID/PW, 토큰 등)를 Authorization 헤더에 담아 다시 요청
  4. 서버:
    • 인증 정보가 올바르면 → 200 OK와 함께 리소스를 응답
    • 인증 정보가 올바르지만 권한이 없으면 → 403 Forbidden 응답

질문 기반 정리

질문 : 인증가 인가의 차이가 무엇인가요?

 

인증은 로그인과 같이 본인이 누구인지 식별하는 과정이고, 인가는 권한의 여부를 확인하는 것입니다.
간단한 예로 백화점 회원 "인증"은 로그인을 통해서 한다면, VIP 회원만 받을 수 있는 혜택은 그에 맞는 인가가 있어야합니다.

여기서 인증에 대한 오류가 있으면 401 Unauthorized 오류를 사용하고 인가에 대한 오류가 있다면 '403 Forbidden` 오류를 사용합니다.

728x90