HTTP 기본 인증이란?
HTTP 기본 인증은 서버가 클라이언트에게 요구하는 인증 방법 중 하나로 HTTP 헤더를 통해서 진행된다.
기본 인증 사용 이유
- API 인증:
RESTful API
나 다른 HTTP 기반 API에서 클라이언트의 요청을 인증하는 데 사용된다. 클라이언트는 HTTP 헤더에 인증 정보(기본 인증, 토큰 인증 등)를 포함시켜 요청을 보내고, 서버는 이를 검증하여 적절한 응답을 제공한다. - 간단한 웹 애플리케이션 인증: 사용자 인터페이스가 복잡하지 않거나 사용자 인증을 위한 별도의 로그인 폼이 필요 없는 간단한 웹 애플리케이션에서 사용된다. 예를 들어, 관리자 페이지나 특정 문서에 대한 접근을 제한하는 경우에 적합하다.
동작 방식
- 서버에 인증이 필요한 요청이 들어오면 서버는 최소 한 번 사용자에게
401 Unauthorized
상태 코드와 함께WWW-Authenticate
응답 헤더를 반환한다. - 클라이언트는 요구되는 정보(아이디, 비밀번호)를
Authorization
헤더에Base64
로 인코딩해 서버로 전달 - 서버는 해당 인증 정보를 통해 인증 성공여부를 파악하고 필요하다면
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
참고
- 오즈코딩스쿨 Flask 수업자료 | 김인섭 강사
- Basic 인증과 Bearer 인증의 모든 것 | 토스페이먼츠
Basic 인증과 Bearer 인증의 모든 것
HTTP 인증은 웹 서버의 비밀번호 같은 역할을 해줘요. 비밀번호로 이메일 계정의 권한을 확인하는 것 처럼, HTTP 인증으로 서버에 접근하는 클라이언트의 권한을 확인해요. HTTP 인증 프레임워크와
www.tosspayments.com
[HTTP] HTTP 기본 인증 (Basic Authentication): 개념과 사용 방법
💋 인증(Authentication) 인증은 사용자의 신원을 확인하는 과정이다. 누군지? 를 보는 것이다. 스프링에서 인증은 보안과 직결되기 때문에 매우 중요한 부분이며, 아래와 같은 절차를 따른다. 1. 사
engineerinsight.tistory.com
'CS' 카테고리의 다른 글
[WEB] 세션(Session) (1) | 2024.03.27 |
---|