HTTP 프로토콜은 비연결성(Connectionless)
, 무상태성(Stateless)
프로토콜입니다.
서버가 클라이언트를 식별하기 위해서는 인증 절차가 필요합니다. 하지만 클라이언트가 로그인을 하더라도 다음 요청 시 클라이언트의 인증 정보를 기억하지 못한다면 인증 절차가 중복되는 문제가 발생하게 됩니다.
그래서 쿠키, 세션 또는 토큰으로 사용자 인증 정보를 유지하여 해결할 수 있습니다.
HTTP 기본 인증
가장 잘 알려진 HTTP 인증 규약으로, 사용자의 이름과 비밀번호를 Base64 인코딩하여 Header에 담아 전송하는 인증 방식입니다. 이 방식은 request를 보낼 때마다 사용자의 계정 정보를 Header에 담아 전송하므로 보안에 취약합니다.
서버 기반 인증
서버의 세션
과 클라이언트의 쿠키
를 기반으로 하는 인증 방식입니다.
토큰 기반 인증
클라이언트의 세션 상태를 저장하지 않고, 필요한 정보가 담겨있는 토큰
을 활용하는 인증 방식입니다. 토큰은 클라이언트가 가지고 있다가 서버로 request를 보낼 때, 인증 헤더에 담아 보냅니다.
서버는 토큰을 검증하고 요청을 처리합니다.
이와 같은 방식으로 인증 처리가 이뤄집니다.
클라이언트가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 저장되는 key-value 형태의 문자열입니다.
<aside> ⭐
</aside>
HTTP Header
(Set-Cookie)에 포함하여 전송한다.HTTP Header
(Cookie)에 담아서 전송한다.