728x90
반응형
Bearer 인증 방식은 OAuth 2.0 프레임워크(제 3자의 클라이언트에게 보호된 리소스를 제한적으로 접근하게 해주는 프레임워크)에서 사용하는 토큰 인증 방식이다.
Bearer 토큰은 OAuth 프레임워크에서 액세스 토큰으로 사용하는 토큰의 유형이다.
Bearer 토큰은 볼 수 없는(불투명한) 문자열일 수도 있고, JWT(JSON Web Token)일 수도 있다. 토큰의 형태는 인증 서버에서 정의한다.
API 인증에는 주로 JWT를 사용한다.
JWT를 사용하는 이유(장점):
- 무상태: 서버가 세션 정보를 저장할 필요가 없어 확장성을 제공하고 서버의 부하를 줄여준다.
- 보안: JWT는 서명이 있어 수신자가 토큰의 진위성을 확인할 수 있다.
- 컴팩트: 컴팩트하여 HTTP 헤더를 보내는 데 효율적이다.
- 상호운용성: JSON 기반 표준이므로 다양한 언어와 플랫폼에서 쉽게 사용할 수 있다.
JWT Bearer 토큰 인증은 아래와 같이 작동한다.
- 클라이언트가 사용자 자격 증명(auth)과 함께 로그인 요청을 서버로 보낸다.
- 서버에서 자격 증명을 검증한다. 사용자 정보가 정확하면 JWT를 만든다.
- 서버는 JWT를 클라이언트로 보낸다. 이 토큰은 클라이언트 측(로컬 스토리지 or 쿠키)에 저장된다.
- 이후 요청마다 클라이언트는 Authorization 헤더에 JWT를 Bearer 토큰으로 포함한다.
Authorization: Bearer <token>
예)
config.headers.Authorization = 'Bearer ' + localStorage.getItem('accessToken');
Bearer 인증의 장점
- Bearer 토큰 자체가 메타데이터를 갖고 있어 서버는 토큰을 발급만 하고 보관할 필요가 없다.
- 여러 서비스 및 서버 간에 토큰을 공유할 수 있어 사용자에게 편리한 경험을 제공한다. (예: 소셜 계정으로 타 서비스 로그인/회원가입)
- 서버에서 토큰의 리소스 접근 권한을 쉽게 철회할 수 있고, 토큰의 유효기간을 설정할 수 있어 안전하게 리소스를 보호할 수 있다.
Bearer 인증의 단점
- 토큰이 외부에 노출되면 다른 서비스도 토큰으로 리소스에 바로 접근할 수 있다. 하지만 보안 장치를 잘 구축했다면 문제가 되지 않고, 서버에서 해당 토큰의 권한을 철회할 수 있기 때문에 대응 가능하다.
728x90
반응형