개발
OAuth 2.0에서 Authorization: Bearer와 기타 토큰 유형
피터JK
2025. 1. 28. 17:49
728x90
OAuth 2.0 인증 체계에서 클라이언트는 API 요청 시 Authorization 헤더를 사용하여 액세스 토큰을 전달합니다. 이 중 가장 일반적인 방식이 Authorization: Bearer입니다. 이번 포스팅에서는 Bearer 토큰의 의미와, Bearer 외에 사용할 수 있는 다른 인증 유형들을 소개하겠습니다.
Authorization: Bearer의 의미
Authorization: Bearer는 OAuth 2.0 인증 체계에서 사용하는 **액세스 토큰(Access Token)**을 전송하기 위한 표준 헤더입니다.
- Bearer Token: 클라이언트가 서버로부터 받은 액세스 토큰을 인증 헤더에 포함하여 인증을 수행하는 방식입니다.
- Bearer는 "소지한 자가 접근 권한을 가진다"는 의미를 가지고 있습니다.
- 서버는 토큰의 유효성을 확인한 뒤 요청을 처리합니다.
- Bearer 토큰은 자체적으로 사용자 권한 정보나 만료 시간 등을 포함할 수 있습니다(JWT 같은 구조).
Authorization: Bearer 헤더 예시
GET /protected/resource HTTP/1.1
Host: api.example.com
Authorization: Bearer <access_token>
- Bearer: 토큰 유형을 명시.
- <access_token>: 서버로부터 받은 액세스 토큰.
Bearer 외의 토큰 유형
OAuth 2.0 표준에서는 Bearer 외에도 다른 인증 유형을 사용할 수 있지만, Bearer가 가장 널리 사용됩니다. 아래는 몇 가지 예입니다:
1. MAC (Message Authentication Code)
- Bearer 토큰보다 높은 보안성을 제공합니다.
- 요청마다 해시 기반의 서명을 생성하여 전송하며, 토큰 탈취로 인한 부정 사용을 방지할 수 있습니다.
- 헤더 예시:
Authorization: MAC id="h480djs93hd8", ts="1336363200", nonce="dj83hs9s", mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM=" - 특징:
- 요청마다 서명을 생성.
- 시간이 포함되므로 재전송 공격 방지 가능.
- 복잡한 구현 및 처리 과정.
2. Basic (Basic Authentication)
- 클라이언트의 username:password 조합을 Base64로 인코딩하여 인증.
- 헤더 예시:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= - 특징:
- 매우 간단하지만 보안에 취약 (HTTPS 필요).
- 자격 증명이 매 요청마다 전송되므로 추천되지 않음.
3. Digest
- 비밀번호 해시와 요청 데이터를 조합하여 서명 생성.
- 헤더 예시:
Authorization: Digest username="user", realm="example", nonce="abc123", uri="/api/resource", response="hash" - 특징:
- 비밀번호 평문 전송 방지.
- Bearer보다 복잡하며 현대 시스템에서는 드물게 사용.
4. OAuth 1.0 (Legacy)
OAuth 2.0 이전에 사용되던 방식으로, 각 요청에 서명을 포함.
- 헤더 예시:
Authorization: OAuth oauth_consumer_key="key", oauth_nonce="nonce", oauth_signature="signature", oauth_signature_method="HMAC-SHA1", oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"
5. Custom Token
특정 서비스나 회사에서 정의한 커스텀 인증 방식.
- 헤더 예시:
Authorization: CustomToken my-custom-token
결론
- Bearer 토큰은 가장 간단하고 널리 사용되는 방식으로, 대부분의 OAuth 2.0 기반 API에서 표준으로 사용됩니다.
- 더 높은 보안이 필요하다면 MAC 또는 기타 서명 기반 인증 방식을 고려할 수 있습니다.
- 인증 방식은 서비스의 보안 요구사항과 복잡성을 고려하여 선택해야 합니다.
OAuth 2.0의 다양한 토큰 유형을 이해하고 적합한 방식을 선택하여 보안성을 강화하세요!
728x90