세션은 “로그인 정보 자체”가 아니다.
👩🏻💻세션의 진짜 역할은?
“이 클라이언트는 인증된 사용자야!”라는 상태를 서버가 기억하는 것
예를 들어서 설명하면:
- Jane이 로그인할 때 ID/PW를 입력해
- 서버는 “Jane 로그인 성공!” → 세션 저장소에 이런 식으로 저장함:
- 세션 ID: abc123 내용: { userId: 77, username: "Jane", isLoggedIn: true }
- 클라이언트는 abc123 이라는 세션 ID를 쿠키에 저장해서 매번 서버에 보냄
- 서버는 abc123 을 보고, Jane이라는 사용자가 로그인한 상태인지 판단함
그래서...
- 세션 = “Jane이라는 사용자가 로그인된 상태다”는 정보를 저장해둔 공간
- 클라이언트는 그걸 세션 ID라는 열쇠(쿠키) 로 계속 들고 다니는 것
로그인 정보 | ID/PW 같은 민감한 정보 (요청 시 한 번만 사용) |
세션 | 로그인 성공 후, 인증된 사용자 상태를 서버에 저장 |
세션 ID | 그 상태를 식별할 수 있는 키 (클라이언트는 이걸 쿠키에 저장) |
세션이랑 쿠키는 '함께' 쓰는 것
간단한 구조 요약
- 사용자 로그인 → 서버가 세션 생성
- 서버는 세션 ID를 클라이언트에게 쿠키로 전달
- 클라이언트는 쿠키를 저장하고, 다음 요청에 자동으로 세션 ID를 보냄
- 서버는 쿠키에 담긴 세션 ID를 보고, 세션 저장소에서 사용자 정보 확인
세션기반의 인증의 키포인트는
사용자의 로그인 상태를 서버에서 관리하고 있다 ✎
* 유저의 로그인 정보를 서버에서 관리하고 있기 때문에, 유저가 직접 로그아웃 하지 않더라도 서버쪽에서 강제로 로그아웃 시킬 수 있음
세션 기반으로 인증 구현한 사례
1)네이버 2) 은행과 같이 자동 로그아웃 기능
여러곳에서 로그인 되어 있고, 로그인을 원격으로 관리할 수 있음.
파기하는 것도 서버에서 되기 때문에, 이게 가능한 것
세션 기반 인증은 단순히 "로그인 유지"만 하는 게 아니라, 사용자 인증과 보안 관리를 위한 다양한 기능들이 있다.
1. 사용자 인증 (Authentication)
- 로그인 성공 시, 세션 생성해서 인증된 사용자로 인식
- 이후 요청마다 세션 ID로 사용자를 식별
2. 사용자 상태 유지 (Session Persistence)
- 로그인 이후, 페이지를 새로고침하거나 이동해도 계속 로그인 상태 유지
- 서버가 사용자 상태를 기억하고 있으니까 가능한 기능!
3세션 만료 (Session Expiration)
- 일정 시간동안 활동이 없거나, 특정 시간이 지나면 세션 자동 삭제
- 보안을 위해 매우 중요한 기능
- 예: 30분 이상 아무 요청 없으면 자동 로그아웃
4. 세션 종료 (Logout)
- 사용자가 로그아웃 버튼을 누르면
→ 서버에서 세션 삭제
→ 다음 요청 시 인증된 사용자가 아님!
5. 세션 정리 (Session Cleanup or GC, Garbage Collection)
- 오래된 세션, 유효하지 않은 세션을 주기적으로 삭제해서
서버 자원 낭비 방지
6. 다중 사용자 처리 (Multi-user support)
- 각 사용자마다 고유한 세션 ID 부여
- Jane, Tom, Lisa 등 여러 사람이 동시에 접속해도 서로의 세션은 분리
7. 서버에서의 역할 기반 접근 제어 (Role-based Access)
- 세션에 role: "admin" 같은 정보도 저장 가능
- 이걸 기반으로 "이 사람은 관리자니까 설정 페이지 접근 가능" 등 처리 가능
보안과 연결되는 기능들
기능 | 설명 |
HttpOnly 쿠키 | JS로 쿠키 못 읽게 해서 해킹 방지 |
Secure 쿠키 | HTTPS에서만 쿠키 전송 |
SameSite 속성 | CSRF 공격 방지용 |
세션 ID 무작위화 | 예측 불가하게 해서 탈취 방지 |
세션 기반 인증은 “누가 로그인했고, 어떤 상태인지”를 서버에서 안전하게 관리하는 모든 기능의 핵심!
출처: 챗지피티, 오즈코딩스쿨 학습자료
'Studying > API' 카테고리의 다른 글
API 공부하기 - POST (데이터를 보내는 것 이외에 데이터를 받아올 때도) (0) | 2025.06.27 |
---|---|
리액트 공부하기 - API 엔드포인트 (0) | 2025.05.27 |
웹 인증 공부하기 - 쿠키 cookie (1) | 2025.05.16 |
http 요청 기본 메서드 (0) | 2025.05.15 |
네트워크 기초 - LAN, MAN, WAN, http, https, SOP, CORS (0) | 2025.05.14 |