클라이언트와 서버 간의 인증과정에서 사용자의 자격을 확인하기 위해 사용되는 헤더
주로 보안이 필요한 웹 리소스에 접근할 때, 사용자가 해당 리소스에 접근할 권한이 있는지 검증하기 위해 사용된다.
서버가 클라이언트에게 인증이 필요함을 알리는 헤더로, 접근 권한을 요구하는 경우 사용됩니다.
클라이언트가 서버에 자신을 인증하기 위해 필요한 정보를 제공하는 헤더
사용자명과 비밀번호를
Base64로 인코딩하여 전달하는 방식
Authorization: Basic base64({USERNAME}:{PASSWORD})
Base64는 단순한 인코딩이므로, HTTPS가 아닌 환경에서는 쉽게 복호화 가능
현실에서는 거의 사용 X
OAuth 2.0 프레임워크에서 사용하는 토큰 인증 방식
Authorization: Bearer <token>
JSON Web Token(JWT)을 포함하여 다양한 형식의 토큰을 전달하는 데 사용
토큰을 소지하고 있는 사람이 그 토큰에 기록된 모든 권한을 갖고, 인증된 사용자로 간주됨
HTTP는 토큰탈취, 데이터 암호화등의 문제가 있으므로,
토큰 기반 인증에서 HTTPS는 필수적이다.
사용자의 비밀번호를 노출하지 않고, 제3자 애플리케이션이 사용자 데이터를 안전하게 접근할 수 있도록 하는 오픈 프로토콜
비밀번호 공유 없이 사용자는 서비스 제공자(Google, Facebook 등)에게 직접 로그인하고, 제3자 앱은 접근 권한만 얻음
토큰 기반 인증 → 사용자 인증 후, 엑세스 토큰(Access Token)을 받아서 API 요청 시 사용.
OAuth 1.0의 서명 기반의 보안방식의 복잡성을 줄이고, OAuth 2.0에서는 서명을 없애고 Bearer Token을 사용하여 간단하게 인증할 수 있도록 변경

Resource Owner: 실제 사용자(유저)
Client: 그 사용자가 사용하는 어플리케이션
Authorization Server: Client 가 사용자의 데이터에 접근할 수 있도록 토큰을 발급하는 서버(Google, Facebook)
Resource Server: 사용자의 데이터를 보유하고 있는 진짜 서버(Google, Facebook)
1. 사용자가 클라이언트 앱에서 로그인 요청
Google 로그인, Kakao 로그인 버튼을 클릭OAuth 제공자(Google, Kakao)의 인증 서버로 이동시킴2. 사용자가 OAuth 제공자(구글, 카카오)에서 로그인 및 동의
Authorization Code(인증 코드)를 클라이언트 앱으로 보냄3. 토큰 교환
Access Token으로 교환4. 리소스 접근
Access Token을 포함하여 사용자 정보를 가져옴