- HTTP 요청에서 Authorization 헤더의 역할
- 인증 정보를 헤더로 전달하는 방식, 그 필요성
- Basic, Bearer, Digest 등 인증 방식 식별자
- RFC 6750에서 정의하는 Bearer 토큰 규격
- 세션 기반 인증, 헤더 기반 인증의 차이
Authorization 헤더
1. Authorization 헤더
HTTP 요청에서 인증 정보를 서버로 전달하기 위해 사용하는 표준 헤더
HTTP 요청의 헤더 부분에 포함됨
서버가 클라이언트의 신원을 확인하고 보호된 리소스 접근 권한을 부여하는 데 사용됨
2. 구조와 기본 형식
| 구성 요소 | 설명 | 예시 |
| 인증 방식 | 어떤 인증 방법을 사용하는지 식별함 | Basic, Bearer, Digest |
| 자격증명 또는 토큰 | 인증 데이터(암호화, 인코딩된 값 등) | 대충 인코딩된 데이터 |
형태는
Authorization: <인증방식> <인증정보> 가 된다
Basic 인증
Authorization: Basic dXNlcjpwYXNz
단순하지만, 보안에 취약하다
반드시 HTTPS와 함께 사용해야한다
Bearer 토큰 인증
Authorization: Bearer dXNlcjpwYXNz
RFC6750에서 정의된 방식으로 보통 엑세스 토큰(JWT 등)을 전달함
https://datatracker.ietf.org/doc/html/rfc7650
"이 토큰을 가진 사람(bearer)은 접근 권한이 있다"라는 의미임
Digest 인증
Authorization: Digest username:"B1uffer", realm="b1uffer@gmail.com", ...
nonce와 해시 알고리즘을 이용해서 암호를 직접 전송하지 않고, 검증한다
현재는 거의 Bearer/JWT 방식으로 대체됐음
3. 세션 기반 인증과의 차이점
| 구분 | 세션 기반 인증 | Authorization 헤더 기반 인증 |
| 인증 정보 저장 위치 | 서버(세션 저장소) | 클라이언트(토큰 등) |
| 전송 방식 | 쿠키(Cookie: SESSION=...) | 헤더(Authorization: ...) |
| 상태 관리 | 서버가 상태(state)를 유지함 | 서버는 무상태(stateless)로 동작 가능 |
| 확장성 | 서버 확장시 세션 동기화가 필요함 | 토큰만 검증하면 되니까 확장성이 높음 |
4. 다이어그램
클라이언트 요청에 따라 Basic, Bearer, Digest 인증에 대한 검증 방식이 다르다
팁
* API 서버를 설계할 땐 일반적으로 Authorization: Bearer <Token 형태> 방식을 가장 많이 사용한다
* Basic은 테스트나 내부 시스템에선 간단하게 쓸 수 있으나, 운영 환경에서는 권장되지 않음
* Digest는 거의 사용되지 않고, 대신 HTTPS + Bearer 토큰이 표준이다
* API 문서(Swagger, Postman 등)에서도 기본적으로 Authorization 헤더 인증을 표준으로 따른다
정리
| 키워드 | 설명 | 예시 |
| Authorization 헤더 | 인증 정보를 서버로 전달하는 표준 헤더 | Authorization: Basic ... |
| Basic | username:password를 Base64로 인코딩해서 전송함 | Basic 대충 인코딩된 내용 |
| Bearer | RFC 6750 정의 주로 토큰 기반 인증에 사용함 |
Bearer 대충 암호화된 내용 |
| Digest | nonce와 해시로 인증함 최근엔 거의 사용되지 않음 |
Digest username="B1uffer", ... |
| 차이점 | 세션은 쿠키 기반이고 Authorization은 헤더 기반임 |
확장성과 보안성 측면에서 차이가 존재함 |
'Spring Boot > 유저 관리 기능' 카테고리의 다른 글
| Authorization 헤더, 토큰 기반 인증 : Refresh 토큰 (0) | 2026.03.15 |
|---|---|
| Authorization 헤더, 토큰 기반 인증 : JWT의 이해 (0) | 2026.03.14 |
| 기본 인증, 인코딩 : 기본 인증 보안 고려사항 (1) | 2026.03.10 |
| 기본 인증, 인코딩 : 인코딩과 Base64URL (0) | 2026.03.10 |
| 기본 인증, 인코딩 : 기본 인증 (0) | 2026.03.09 |