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.
'ETC (IT)' 카테고리의 다른 글
(MySQL) Windows에 MySQL 8.4 설치해서 사용해보기 (0) | 2024.10.22 |
---|---|
(PostgreSQL) Windows에 PostgreSQL 설치해서 사용해보기 (0) | 2024.08.29 |
(Windows) Linux스러운 Windows 개발환경 구성해보기 (0) | 2022.06.03 |
(MySQL) MySQL 설치, 연결, DB생성, 사용자 생성, 테이블 생성, 기초데이터 입력 (0) | 2021.08.21 |
(Linux) Ubuntu 에서 ping, ifconfig 설치 (0) | 2021.08.21 |