# 인증(Authentication) 인증은 사용자가 누구인지 확인하는 과정을 의미합니다. 일반적으로 로그인 과정을 통해 사용자 신원을 확인하며, 이후 세션을 통해 인증 상태를 유지합니다. ## 세션 기반 인증 * 서버에 세션 정보를 저장하고, 클라이언트는 세션 ID를 쿠키로 저장. * 서버에서 세션 ID를 확인하여 사용자를 인증. ### 세션 기반 인증 흐름 1. 클라이언트가 로그인 요청을 보냄. 2. 서버는 사용자를 인증한 후 세션을 생성하고, 세션 ID를 쿠키로 설정하여 클라이언트에 반환. 3. 클라이언트는 이후 요청마다 해당 세션 ID를 쿠키에 포함하여 보냄. 4. 서버는 세션 ID를 기반으로 사용자를 인증. ## 토큰 기반 인증 * 사용자를 인증하면 **토큰(JWT)**을 생성하여 클라이언트에 전달. * 클라이언트는 요청 시 토큰을 포함(Authorization 헤더)하여 인증. ### 토큰 기반 인증 흐름 (JWT) 1. 클라이언트가 로그인 요청을 보냄. 2. 서버는 사용자를 인증한 후 **JSON Web Token(JWT)**을 생성하여 클라이언트에 반환. 3. 클라이언트는 토큰을 로컬 저장소 또는 쿠키에 저장. 4. 이후 요청 시 토큰을 Authorization 헤더에 포함하여 서버에 전송. ## OAuth * 서드파티 인증을 위한 표준 프로토콜. * Google, Facebook, GitHub 등을 통한 로그인 방식.