API 인증 및 권한 부여에 사용되는 OAuth 2.0 프로토콜의 중요한 구성 요소
이 토큰을 소지한 사람은 인증된 것으로 간주된다 라는 의미를 가진다
특징
1. 간단한 인증 방식
- 클라이언트가 서버에 요청할 때 토큰을 포함하여 요청하면 서버는 토큰을 확인하고 인증 및 권한을 부여한다
2. 토큰 기반 인증
- 사용자 이름과 비밀번호 대신 토큰을 사용해 보안을 강화한다
3. Stateless
- 서버가 세션 정보를 유지하지 않고, 요청마다 토큰을 검사한다
4. 보안 중요
- 토큰이 탈취되면 악의적인 사용자가 이를 통해 요청을 보낼수 있다
사용 방법
HTTP 요청 예제
HTTP 요청의 헤더에 포함되어 전송된다
GET /api/resource HTTP/1.1
Host: example.com
Authorization: Bearer <token>
Authorization 헤더 :
Authorization: Bearer <token>
여기서 <token>은 인증 서버에서 발급받은 실제 토큰 값
헤더없이 요청 :
만약 토큰이 없는 요청이 들어오면 서버는 401 Unauthorized 상태 코드를 반환함
장점
1. 보안 강화
- 비밀번호를 직접 전송하지 않아도 인증이 가능하다
- 요청마다 토큰을 사용해 세션 관리 없이도 상태를 유지
2. 분산 시스템 적합
- 서버 간 상태를 공유할 필요 없이, 토큰만으로 인증 가능하다
3. 유연성
- 다양한 클라이언트 (웹,모바일 앱 등)에서 동일한 방식으로 인증을 사용할 수 있다
단점
1. 토큰 탈취 위협
- 토큰이 유출되면 악의적인 사용자가 이를 사용해 인증된 것처럼 행동할 수 있다
2. 유효 기간 관리
- 토큰의 만료 시간을 적절히 설정하지 않으면 보안 문제가 발생할 수 있다
3. HTTPS 필요
- Bearer Token은 평문으로 전송되므로 HTTPS로 보호되지 않으면 탈취될 가능성이 높다
사용 시 보안 팁
1. HTTPS 사용
- 요청과 응답을 암호화하여 토큰을 안전하게 전송한다
2. 토큰 만료 시간 설정
- 짧은 유효 기간을 설정해 탈취 시 피해를 최소화한다
3. 토큰 갱신
- Refresh Token을 사용하여 액세스 토큰을 갱신하는 방식으로 보안을 강화한다
4. 탈취 감지
- 이상한 요청이 감지되면 토큰을 무효화한다
요약
- Bearer Token은 API 인증에 사용되는 토큰 기반의 인증 방식이다
- 클라이언트가 요청 시 Authorization 헤더에 토큰을 포함하여 서버에 전달한다
- 간단하고 효율적이지만, 보안에 주의해야 한다
- JWT 형식으로 Bearer Token이 생성되는 경우가 많으며, 보안 강화를 위해 HTTPS 및 토큰 만료 관리가 중요하다
출처 : ChatGPT