HTTP 헤더

코딩덕·2025년 2월 14일

면접왕

목록 보기
13/13

HTTP 자격증명 헤더

클라이언트와 서버 간의 인증과정에서 사용자의 자격을 확인하기 위해 사용되는 헤더

주로 보안이 필요한 웹 리소스에 접근할 때, 사용자가 해당 리소스에 접근할 권한이 있는지 검증하기 위해 사용된다.



HTTP 헤더 종류

✅ WWW-Authenticate (서버 → 클라이언트)

서버가 클라이언트에게 인증이 필요함을 알리는 헤더로, 접근 권한을 요구하는 경우 사용됩니다.

✅ Authorization (클라이언트 → 서버)

클라이언트가 서버에 자신을 인증하기 위해 필요한 정보를 제공하는 헤더



인증방식

1. 기본인증

사용자명과 비밀번호를 Base64로 인코딩하여 전달하는 방식

Authorization: Basic base64({USERNAME}:{PASSWORD})
  1. Base64는 단순한 인코딩이므로, HTTPS가 아닌 환경에서는 쉽게 복호화 가능

  2. 현실에서는 거의 사용 X


2. Bearer 토큰

OAuth 2.0 프레임워크에서 사용하는 토큰 인증 방식

Authorization: Bearer <token>
  1. JSON Web Token(JWT)을 포함하여 다양한 형식의 토큰을 전달하는 데 사용

  2. 토큰을 소지하고 있는 사람이 그 토큰에 기록된 모든 권한을 갖고, 인증된 사용자로 간주됨

  3. HTTP는 토큰탈취, 데이터 암호화등의 문제가 있으므로,
    토큰 기반 인증에서 HTTPS는 필수적이다.


3. OAuth 2.0

사용자의 비밀번호를 노출하지 않고, 제3자 애플리케이션이 사용자 데이터를 안전하게 접근할 수 있도록 하는 오픈 프로토콜

  1. 비밀번호 공유 없이 사용자는 서비스 제공자(Google, Facebook 등)에게 직접 로그인하고, 제3자 앱은 접근 권한만 얻음

  2. 토큰 기반 인증 → 사용자 인증 후, 엑세스 토큰(Access Token)을 받아서 API 요청 시 사용.

  3. OAuth 1.0서명 기반의 보안방식의 복잡성을 줄이고, OAuth 2.0에서는 서명을 없애고 Bearer Token을 사용하여 간단하게 인증할 수 있도록 변경

  • Resource Owner: 실제 사용자(유저)

  • Client: 그 사용자가 사용하는 어플리케이션

  • Authorization Server: Client 가 사용자의 데이터에 접근할 수 있도록 토큰을 발급하는 서버(Google, Facebook)

  • Resource Server: 사용자의 데이터를 보유하고 있는 진짜 서버(Google, Facebook)


OAuth 인증 과정 정리

1. 사용자가 클라이언트 앱에서 로그인 요청

  • 사용자가 Google 로그인, Kakao 로그인 버튼을 클릭
  • 클라이언트 앱이 OAuth 제공자(Google, Kakao)인증 서버로 이동시킴

2. 사용자가 OAuth 제공자(구글, 카카오)에서 로그인 및 동의

  • 사용자가 OAuth 제공자의 로그인 화면에서 ID/PW 입력 후, 로그인
  • OAuth 제공자는 Authorization Code(인증 코드)를 클라이언트 앱으로 보냄

3. 토큰 교환

  • 클라이언트 인증코드를 Access Token으로 교환

4. 리소스 접근

  • 클라이언트 앱이 Access Token을 포함하여 사용자 정보를 가져옴

0개의 댓글