인증 (Authentication)
- 클라이언트가 서버에 접근하기 전에 본인임을 증명하는 과정
- API는 요청을 보낸 사용자가 누구인지 확인하고, 해당 사용자가 허가된 요청만 수행할 수 있도록 제어함
# API Key
- 클라이언트가 요청 헤더 또는 URL에 고유한 키를 포함하여 요청을 보내는 방식
# 기본 인증 (Basic Authentication)
- 사용자 이름과 비밀번호를 Base64로 인코딩하여 요청 헤더에 포함해서 보내는 방식
# 쿠키 기반 인증 (Cookie-Based Authentication)
- 브라우저에서 쿠키를 사용하여 인증 정보를 저장하고, 이후 모든 요청에 자동으로 쿠키를 포함시켜 보내는 방식
- Stateful (상태 유지)
: 서버가 클라이언트의 세션 정보를 유지하고, 이를 기반으로 요청을 처리함
# OAuth (Open Authorization)
- 외부 애플리케이션이 사용자의 인증 정보를 대신 사용하여 API에 접근하는 방식
[작동 방식]
i. 클라이언트가 인증 서버에 인증 요청
ii. 인증 서버가 Access Token 발급
iii. 클라이언트가 API 요청 시 토큰 사용
iv. 서버가 토큰을 확인하고 요청 처리
# JWT (JSON Web Token)
- 클라이언트와 서버 간에 JSON 객체로 인증 정보를 안전하게 전송하기 위한 표준
- 토큰 자체에 인증 정보가 포함되어 있음
→ 서버는 별도로 세션 상태를 관리할 필요 없이, 토큰만을 검증하면 됨 (Stateless)
→ 서버가 여러 대인 경우에도 클라이언트는 동일한 토큰을 사용할 수 있음
- 보안성
· 유효기간이 있어, 자동으로 만료됨
· 서버만 알고 있는 비밀 키로 생성된 '서명'이 존재함
→ 서버가 원본 비밀 키를 사용하여 서명을 검증하기 때문에, 변조가 불가능함
[작동 방식]
i. 사용자가 아이디와 비밀번호를 서버로 전송하여 로그인 요청
ii. 로그인 요청이 유효한 경우, 서버가 JWT 토큰을 생성하여 클라이언트에 반환함
iii. 클라이언트는 반환받은 JWT를 로컬 스토리지 or 세션 스토리지 or 쿠키 등에 저장함
iv. 이후 클라이언트가 API 요청을 보낼 때마다 JWT 토큰을 요청 헤더에 포함하여 서버에 전송함
v. 서버는 요청에 포함된 토큰을 검증하고, 토큰이 유효한 경우에만 요청을 처리함
'CS' 카테고리의 다른 글
[CS] 백엔드 개발자 로드맵 따라가기 (진행중) (0) | 2024.11.23 |
---|---|
[CS] 캐싱 전략 (0) | 2024.11.21 |
[CS] API (Application Programming Interface) (5) | 2024.11.19 |
[CS] 브라우저 (Browser) (1) | 2024.11.18 |
[CS] 호스팅 (Hosting) (1) | 2024.11.17 |