CS

[WEB] HTTP 기본 인증(Basic Authentication)

뉴비션 2024. 3. 26. 01:28

HTTP 기본 인증이란?

HTTP 기본 인증은 서버가 클라이언트에게 요구하는 인증 방법 중 하나로 HTTP 헤더를 통해서 진행된다.

기본 인증 사용 이유

  1. API 인증: RESTful API나 다른 HTTP 기반 API에서 클라이언트의 요청을 인증하는 데 사용된다. 클라이언트는 HTTP 헤더에 인증 정보(기본 인증, 토큰 인증 등)를 포함시켜 요청을 보내고, 서버는 이를 검증하여 적절한 응답을 제공한다.
  2. 간단한 웹 애플리케이션 인증: 사용자 인터페이스가 복잡하지 않거나 사용자 인증을 위한 별도의 로그인 폼이 필요 없는 간단한 웹 애플리케이션에서 사용된다. 예를 들어, 관리자 페이지나 특정 문서에 대한 접근을 제한하는 경우에 적합하다.

동작 방식

HTTP 기본 인증 동작 순서 - 토스페이먼츠

  1. 서버에 인증이 필요한 요청이 들어오면 서버는 최소 한 번 사용자에게 401 Unauthorized 상태 코드와 함께 WWW-Authenticate 응답 헤더를 반환한다.
  2. 클라이언트는 요구되는 정보(아이디, 비밀번호)를 Authorization헤더에 Base64로 인코딩해 서버로 전달
  3. 서버는 해당 인증 정보를 통해 인증 성공여부를 파악하고 필요하다면 Authentication-Info헤더에 추가 정보를 담아서 응답한다.
  • WWW-Authenticate: 서버가 인증에 필요한 정보에 대해 설명하는 헤더 realm지시자를 포함한다.
    • realm: 보안 그룹으로 보안 그룹별로 다른 사용자 권한을 요구하며 클라이어트가 권한에 대한 범위를 이해할 수 있게 서술해야한다.

예시

  • 서버에서 인증 요구(401 Unauthorized)
    HTTP/1.1 401 Unauthorized
    Date: Wed, 21 Oct 2015 07:28:00 GMT
    WWW-Authenticate: Basic realm="Access to staging site"
  • 클라이언트 응답
    Authorization: Basic userid:password

장점

  • 간단함
    • 사용자 아이디와 비밀번호 외에 로그인 페이지나 별도의 인증 정보를 요구하지 않아 간편하게 인증 절차를 진행할 수 있다.
    • 단순하고 구축하기 쉽다.

단점

  • 보안
    • Base64 방식으로 인코딩을 하긴 하지만 디코딩이 가능하여 보호기능이 충분하지 않다.
    • 헤더에 정보를 넣어서 보내는 방식이기 때문에 헤더를 수정하는 공격(Header Injection)도 가능하다.
    • HTTPS를 사용하여 암호화 및 공격을 방지할 수 있다.
  • 서버의 부담
    • 기본 인증 방식은 서버에 사용자 목록을 저장하므로 요청한 리소스가 많거나, 사용자가 늘어날수록 서버에 부담이 간다. (권한 조회 시간, 데이터 저장 공간 등)
  • 정교한 제어
    • 사용자에게 꼭 필요한 권한만 주는게 좋은데 기본 인증 방식으로는 세세하게 권한을 조절하기 위해서는 추가 구현이 필요하다.

 


 

Flask에서 활용 방법

 

[Flask] Flask-HTTPAuth를 활용한 HTTP 기본 인증

HTTP 기본 인증이란? [WEB] HTTP 기본 인증(Basic Authentication) HTTP 기본 인증이란? HTTP 기본 인증은 서버가 클라이언트에게 요구하는 인증 방법 중 하나로 HTTP 헤더를 통해서 진행된다. 기본 인증 사용

newbission.tistory.com

 


참고

 

Basic 인증과 Bearer 인증의 모든 것

HTTP 인증은 웹 서버의 비밀번호 같은 역할을 해줘요. 비밀번호로 이메일 계정의 권한을 확인하는 것 처럼, HTTP 인증으로 서버에 접근하는 클라이언트의 권한을 확인해요. HTTP 인증 프레임워크와

www.tosspayments.com

 

[HTTP] HTTP 기본 인증 (Basic Authentication): 개념과 사용 방법

💋 인증(Authentication) 인증은 사용자의 신원을 확인하는 과정이다. 누군지? 를 보는 것이다. 스프링에서 인증은 보안과 직결되기 때문에 매우 중요한 부분이며, 아래와 같은 절차를 따른다. 1. 사

engineerinsight.tistory.com