Introduction
웹 사이트나 앱에서 로그인하고 서비스를 이용할 수 있는 이유는 바로 인증(Authentication) 덕분이다.
하지만 인증 방식에도 여러 종류가 있는데, 그중에서도 Basic 인증과 Bearer 인증에 대해 작성해봤다.
1. 인증(Authentication) 이란?
웹 서버는 누구든 접속할 수 있게 열려 있지만,
특정 정보나 기능은 허가된 사람만 쓸 수 있도록 제한하고 싶을 때가 많다.
이때 "너 누구야?" 하고 신원을 확인하는 것이 바로 인증이다.
2. Basic 인증이란?
Basic 인증은 웹 서버에서 사용자에게 아이디와 비밀번호를 요구하여, 그 정보를 바탕으로 사용자의 신원을 확인하는 아주 단순한 인증 방식이다. 특징적으로, 이 방식은 아이디와 비밀번호를 문자열로 붙인 다음, 그것을 Base64로 인코딩해서 서버로 보내는 구조이다.
예를 들어:
아이디가 admin, 비밀번호가 1234라고 가정한다면
1. 둘을 이어 붙인다.
admin:1234
2. 이 문자열을 Base64로 인코딩 한다.
YWRtaW46MTIzNA==
3. 이렇게 만들어진 값을 HTTP 요청의 헤더에 넣어 인증을 한다.
Authorization: Basic YWRtaW46MTIzNA==
즉, 이 방식의 핵심은 "아이디:비밀번호"를 Base64로 살짝 감춰서 보내는 것이다. 하지만 이것은 진짜 보안이 되는 것이 아니다.
Base64는 암호화가 아니라, 단순한 텍스트 인코딩이다. 누구든지 Base64 문자열을 복호화해서 원래 아이디/비밀번호를 볼 수 있다.
2.1. Basic 인증의 동작 방식
1) 사용자가 인증이 필요한 웹 페이지에 접속한다.
예: http://example.com/test
2) 서버가 "이 페이지는 보호되어 있어요. 인증 정보 주세요!"라고 401 Unauthorized 응답을 보낸다.
3) 브라우저가 아이디/비밀번호 입력창을 띄운다.
4) 사용자가 입력한 정보를 "아이디:비밀번호" 형태로 만든 후, Base64로 인코딩해서 서버에 전송한다.
5) 서버는 이를 디코딩해서 아이디/비밀번호가 맞는지 확인한다.
3. Bearer 인증이란?
Bearer 인증은 서버가 사용자에게 Access Token(접근 토큰)을 발급하고, 이 토큰을 클라이언트가 요청마다 HTTP 헤더에 담아 전송함으로써 인증을 수행하는 방식이다.
Bearer라는 단어는 '소지자'를 의미하며, 말 그대로 이 토큰을 "가지고 있는 자"가 인증된 사용자로 간주된다는 의미를 가진다.
이 방식은 사용자 인증을 보다 안전하고 유연하게 처리할 수 있어 OAuth 2.0, JWT, REST API, 모바일 앱 인증 등 현대적인 인증 시스템에서 널리 활용된다.
3.1. Bearer 인증의 동작 방식
1) 사용자가 아이디와 비밀번호 등으로 로그인 요청을 보내면, 서버는 이를 검증한 뒤 Access Token(JWT)을 발급한다.
2) 클라이언트는 이 토큰을 안전하게 저장해두고, 이후 서버에 요청을 보낼 때마다 HTTP 헤더에 다음과 같이 포함시킨다.
Authorization: Bearer [Access Token]
3) 서버는 전달받은 토큰의 유효성을 검사하고, 만료 여부, 서명검증, 권한 등을 확인한 뒤 요청을 처리한다.
'Knowledge' 카테고리의 다른 글
[Knowledge] DOM-Based XSS (0) | 2025.06.30 |
---|---|
[Knowledge] 공인 IP & 사설 IP & NAT의 역할 (0) | 2025.03.19 |
[Knowledge] 비밀번호 해시화, 안전하게 지키려면 관리가 핵심 (0) | 2025.03.17 |
[Knowledge] 360XSS (1) | 2025.03.09 |
[Knowledge] MITM 공격 (0) | 2025.03.01 |