왜 Authorization "Bearer"인가요?
멀지 않은 과거에 XHR 클라이언트 Authorization 헤더에 Bearer 토큰을 넣기 위해 클라이언트 스토리지(localStorage, et cetera...)에 스크립트 접근 가능한 옵션으로 엑세스 토큰과 리프레시 토큰을 저장하는 코드를 발견했습니다.
스크립트 접근 불가능하도록 수정하고, 요청량이 많지 않아 리모트 프록시에서 Auth header를 셋업해서 중개하는 작업을 하는 도중 들었던 궁금증입니다.
왜 Authorization 헤더는 'Bearer'일까?
이 글에서 다루는 내용
이 글에서는 Bearer 토큰이 왜 현대 웹 인증에서 표준처럼 자리 잡았는지, 그리고 이를 활용하는 방법에 대해 다룹니다. 단순한 HTTP 헤더 속 문자열처럼 보이지만, Bearer 토큰은 API 보안, OAuth 2.0, OpenID Connect 등 다양한 기술에서 핵심적인 역할을 합니다.
특히, JWT(JSON Web Token)를 기반으로 한 인증 흐름과 SPA(Single Page Application)에서의 보안 구현, 토큰의 한계와 이를 보완하는 기술들에 대해 간략히 풀어 설명합니다.
- 1. 서론: Authorization Bearer 토큰이란 무엇인가?
- 2. 역사적 배경: Authorization 헤더와 Bearer 스키마의 등장
- 3. Bearer 토큰이 표준으로 자리 잡은 이유
- 4. Bearer 토큰의 한계와 보완책
- 5. 실무에서의 Bearer 토큰 사용 사례
- 6. Bearer 토큰의 현재와 미래
- References
1. 서론: Authorization Bearer 토큰이란 무엇인가?
Bearer 토큰은 오늘날 웹 애플리케이션과 API 통신에서 가장 흔히 사용되는 인증 방식 중 하나입니다. 클라이언트가 서버에 요청을 보낼 때, 사용자의 인증 상태를 나타내기 위해 HTTP의 Authorization 헤더에 Bearer 토큰이 포함됩니다. 이 단원에서는 Bearer 토큰이 무엇인지 간략히 소개하고, JWT(JSON Web Token)와의 관계를 살펴보겠습니다.
Authorization 헤더의 역할
Authorization 헤더는 HTTP 프로토콜에서 클라이언트가 서버에 인가된 상태임을 전달하는 수단으로 사용됩니다. 이는 사용자 인증을 거친 후, 서버에 자신의 신원을 증명하기 위해 필수적입니다. 일반적으로 다음과 같은 구조를 가집니다.
Authorization: <스키마> <자격 증명>
여기서 <스키마>는 인증 방식(예: Basic, Bearer)을 나타내고, <자격 증명>은 클라이언트의 인증 정보를 포함합니다. Bearer는 이러한 인증 방식 중 하나로, OAuth 2.0에서 널리 사용되는 스키마입니다.
Bearer 토큰이란?
Bearer 토큰은 클라이언트가 특정 리소스에 접근할 수 있는 권한을 증명하기 위해 서버에 전달하는 토큰입니다. 토큰은 HTTPS를 통해 전송되어야 하며, 이를 통해 토큰이 네트워크에서 탈취되는 것을 방지할 수 있습니다.
Authorization: Bearer <토큰>
더 자세한 내용은 다음 단원에서 설명합니다.
JWT(JSON Web Token)의 정의와 Bearer 토큰과의 관계
JWT는 Bearer 토큰에서 자주 사용되는 토큰 포맷 중 하나입니다. JWT는 self-contained token으로, 다음과 같은 구조를 가집니다.
- Header: 토큰의 타입과 서명 알고리즘 정보를 포함합니다.
- Payload: 사용자 정보와 클레임(Claims, 권한 정보 등)을 담습니다.
- Signature: 토큰의 무결성을 보장하기 위한 서명입니다.

JWT는 Bearer 토큰으로 자주 사용되며, 서버가 별도의 세션 상태를 관리하지 않아도 인증을 수행할 수 있도록 해줍니다. 이 덕분에 RESTful API와 같은 stateless 아키텍처에서 효율적으로 사용됩니다.
Recap
Bearer 토큰은 클라이언트가 서버에 자신을 인증하기 위해 사용하는 간단하고 효과적인 방식입니다. 특히 JWT는 Bearer 토큰의 구현 방식으로 널리 활용되며, 클라이언트-서버 간의 인증을 효율적이고 안전하게 처리할 수 있는 기반을 제공합니다. 이 방식은 OAuth 2.0과 HTTPS의 조합을 통해 현대 웹 애플리케이션의 핵심적인 인증 방식으로 자리 잡았습니다.