본문 바로가기
ETC (IT)

API 서버의 인증은 어떻게 하는가?

by 가우리언 2024. 11. 26.
728x90
반응형

 

1. API 키 기반 인증

  • 클라이언트가 서버로부터 발급받은 고유한 API 키를 요청 헤더에 포함하여 요청을 보냅니다.
  • 서버는 해당 키를 확인하고 요청을 처리합니다.

특징

  • 간단하고 설정이 쉬움.
  • 보안 수준이 낮음(키가 노출되면 악용 가능).
  • 주로 공공 API에서 사용.

예시

GET /resource HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
 

2. JWT(JSON Web Token)

  • 서버에서 사용자 로그인 시 비밀 키로 JWT를 발급하고, 클라이언트는 이후 요청 시 이 토큰을 헤더에 포함하여 전달합니다.
  • 서버는 토큰을 검증하여 사용자를 인증합니다.

특징

  • Stateless 방식: 서버는 상태를 저장하지 않음.
  • 발급된 토큰은 클라이언트에서만 저장됨(주로 로컬 스토리지 또는 쿠키).
  • 토큰에 사용자 정보를 포함할 수 있어 확장성이 좋음.

예시

GET /resource HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
 

3. OAuth 2.0

  • 제3자 인증 방식으로, 클라이언트가 별도의 인증 서버를 통해 액세스 토큰을 얻은 후 API 서버에 전달합니다.
  • 액세스 토큰리프레시 토큰을 활용하여 보안성을 높입니다.

특징

  • 보안성이 매우 높음.
  • 구현이 복잡하며 주로 대규모 서비스에서 사용.
  • 예: Google, Facebook, GitHub 로그인.

4. 세션 기반 인증

  • 사용자가 로그인하면 서버에서 세션을 생성하고, 클라이언트는 세션 ID를 쿠키로 저장하여 요청 시 서버에 보냅니다.
  • 서버는 세션 스토리지(메모리, Redis 등)를 참조하여 사용자를 인증합니다.

특징

  • 상태 저장 방식(Stateful).
  • 주로 웹 애플리케이션에서 사용.
  • 확장성(스케일링)에 제한이 있을 수 있음.

예시

Cookie: sessionId=xyz123
 

5. Basic Authentication

  • 요청 시 사용자의 아이디와 비밀번호를 Base64로 인코딩하여 헤더에 포함합니다.
  • 보안성이 낮아 HTTPS를 사용하지 않으면 추천되지 않음.

예시

GET /resource HTTP/1.1
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
 

6. Mutual TLS 인증

  • 서버와 클라이언트 모두 SSL/TLS 인증서를 사용하여 상호 인증을 수행합니다.
  • 주로 금융 또는 보안이 중요한 서비스에서 사용.

특징

  • 매우 높은 보안 수준.
  • 인증서 관리가 복잡함.

선택 기준

  • 간단한 서비스: API 키 또는 세션 기반 인증.
  • 분산된 클라이언트 환경: JWT.
  • 제3자 인증 필요: OAuth 2.0.
  • 고보안 요구: Mutual TLS.
728x90
반응형