CS 공부 - HTTP 상태 401(Unauthorized) vs 403 차이(Forbidden)

임성준·2023년 3월 21일

CS 스터디

목록 보기
1/1
  • 2023.03.18 CS 스터디 진행
  • CS 스터디를 진행하면서 네트워크 주제 중 HTTP 상태 코드 401, 403의 차이에 대해 정리해보았다.

◎ HTTP

  • HyperText Transfer Protocol(하이퍼텍스트 전송 프로토콜)의 약자
  • 인터넷 상에서 데이터를 주고받을 때 사용하는 프로토콜 중 하나
  • HTTP는 웹 브라우저와 웹 서버 간에 통신하는 데에 주로 사용

◎ HTTP 클라이언트-서버 모델

  • HTTP는 클라이언트-서버 모델을 따릅니다. 클라이언트는 요청(request)을 보내고, 서버는 이 요청을 받아 처리한 후에 클라이언트에게 응답(response)을 보냅니다.
  • HTTP는 기본적으로 TCP/IP 프로토콜 위에서 동작하며, 보안을 위해 HTTPS라는 보안 프로토콜이 존재합니다.
  • HTTP는 웹 애플리케이션 개발에서 중요한 역할을 합니다. 웹 애플리케이션은 사용자와 서버 간의 상호작용을 위해 HTTP를 사용하여 데이터를 전송하고, 서버는 이를 처리하여 웹 페이지를 동적으로 생성하고 반환합니다.

◎ HTTP 상태 코드 401과 403?

  • 둘 다 인증(authentication)과 관련된 상태 코드

◎ HTTP 상태코드 - 401 Unauthorized

  • 401 Unauthorized 상태 코드는 클라이언트가 요청한 리소스에 접근하려면 인증이 필요하다는 것을 나타냅니다. (인증 오류)
  • 즉, 클라이언트가 보내는 요청에 인증 정보가 없거나 유효하지 않은 경우에 발생합니다. 이 경우, 클라이언트는 인증 정보를 제공하여 다시 시도해야 합니다.
  • 예를 들어, 로그인되지 않은 사용자가 로그인이 필요한 페이지에 접근하려고 시도한 경우 401 Unauthorized 상태 코드가 반환됩니다. (익명의 사용자)
  • 토큰이 없거나 유효하지 않은 토큰(기한 만료)으로 요청을 전송한 상황

◎ HTTP 상태코드 - 403 Forbidden

  • 403 Forbidden 상태 코드는 클라이언트가 요청한 리소스에 접근 권한이 없다는 것을 나타냅니다. (권한 오류)
  • 즉, 인증은 되었지만, 해당 리소스에 접근할 권한이 없는 경우에 발생합니다.
  • 예를 들어, 관리자 권한이 없는 사용자가 관리자 페이지에 접근하려고 시도한 경우 403 Forbidden 상태 코드가 반환됩니다. (권한이 없는 사용자)
  • 서버가 요청을 이해하였으나, 클라이언트에게 필요한 권한이 없는 등의 사유로 인해 작업을 진행할 수 없음
  • 올바른 토큰을 보낸 건 맞지만 요청한 것에 대한 권한이 제공되지 않음

◎ 요약

HTTP 상태UnauthorizedForbidden
상태 코드401403
오류 종류인증 오류권한 오류
상황클라이언트가 인증되지 않았거나, 유효한 인증 정보가 부족하여 요청이 거부됨서버가 해당 요청을 이해했지만, 권한이 없어 요청이 거부되었음
예시사용자가 로그인되지 않은 경우사용자가 권한이 없는 요청을 하는 경우

◎ 그 밖의 자주 보는 HTTP 상태코드 종류

  • 200 OK: 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다.
  • 201 Created: 클라이언트의 요청으로 새로운 리소스가 생성되었음을 나타냅니다.
  • 204 No Content: 클라이언트의 요청이 성공적으로 처리되었으나, 서버가 응답 본문(body)을 반환하지 않음을 나타냅니다.
  • 400 Bad Request: 클라이언트의 요청이 잘못되었거나 서버에서 처리할 수 없는 형식인 경우에 발생합니다. 서버는 클라이언트가 원하는 요청을 이해하지 못함
  • 401 Unauthorized: 클라이언트의 요청에 대한 인증이 실패하였거나 인증 정보가 제공되지 않은 경우에 발생합니다.
  • 403 Forbidden: 클라이언트의 요청이 유효하나, 요청한 리소스에 대한 접근 권한이 없는 경우에 발생합니다.
  • 404 Not Found: 클라이언트의 요청한 리소스를 서버에서 찾을 수 없는 경우에 발생합니다.
  • 500 Internal Server Error: 서버에서 처리 중에 예기치 않은 오류가 발생한 경우에 발생합니다.
  • 503 Service Unavailable: 서버에서 해당 요청을 처리할 수 없는 상태일 때, 일시적으로 서비스를 이용할 수 없는 상태임을 나타냅니다.
profile
개발자가 되고 싶은

0개의 댓글