웹 개발/Auth

Basic Auth

devsean 2025. 3. 20. 20:32

들어가며

Basic Auth은 HTTP 통신의 기본적인 인증 방식이다. 해당 인증 방식의 흐름과 문제점, 보완 방법, 그리고 어디에 활용될 수 있는지 살펴본다.

 

 

Basic Auth 인증 방식의 흐름

요청

1. 사용자 이름과 비밀번호를 다음과 같은 형태로 붙인다.

username:password

 

2. Base64로 인코딩해서, 다음과 같이 Authorization 헤더에 포함한다.

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

 

응답

Base64 디코딩 이후 username과 password를 비교하여 인증 처리한다.

 

문제점

보안에 취약하다. Base64는 단순 인코딩/디코딩 방식으로, 엄밀히 얘기하면 암호화 방식은 아니다. 도중에 패킷이 탈취당하면 username과 password가 바로 드러날 수 있으며, 또한 유저 정보 검증을 위해 DB에 username과 password를 바로 넣는 것도 보안 관점에서 좋지 않다.

 

보완책

MDN Docs에서는 HTTPS 방식을 함께 사용할 것을 권장한다. 또한 AES, RSA, Hashing & Salting 같은 방식을 적용하여, Authorization Header에 들어오는 값을 추가 암호화하여 보안성을 확보할 수 있다.

 

활용

웹 서비스에서, 클라이언트-서버 간의 사용자 인증/인가 방식은 흔히 JWT 방식을 채택한다. 암/복호화 로직 이외에도 서명을 추가하고 만료 시간을 설정할 수 있다는 점에서, Basic Auth 방식에 비해 보안성이 좋기 때문이다. 또한 토큰 방식을 채택하면 DB에 가는 요청을 줄일 수 있어 사용자 경험 측면에서도 우월하다.

 

Basic Auth 방식은 관리해야 할 인증 대상이 한정적이고, 상대적으로 보안 위협에 덜 노출된 상황에 적절하다. 예시로 시스템 내부에서의 서버-서버 간 통신에서 사용하기 좋다. 자원 주소가 브라우저에 노출되는 것이 아니기 때문에, 인증에 필요한 username과 password가 노출되지 않으면 보안성을 확보할 수 있다.

 

참고 자료

 

HTTP 인증 - HTTP | MDN

HTTP는 접근 제어와 인증을 위한 일반적인 프레임워크를 제공합니다. 이 페이지에서는 일반적인 HTTP 인증 프레임워크를 소개하고 서버에 HTTP의 Basic 스키마 인증 방식으로 접근을 제한하는 것을

developer.mozilla.org