귀여운 눈높이에서 작성된, 🐰

하루 한 걸음씩, 성장 하는 중 입니다 🫶🏻

Studying/API

웹 인증 공부하기 - session 세션

creamymood 2025. 5. 16. 13:20

로그인에 성공 했다거나, 본인인증에 성공한 경우. 이렇게 인증에 성공한 상태
사용자가 인증 성공한 상태를 -> 서버에 저장해서 관리하는 방식 -> 세션 기반 인증


세션은 “로그인 정보 자체”가 아니다.

👩🏻‍💻세션의 진짜 역할은?

“이 클라이언트는 인증된 사용자야!”라는 상태를 서버가 기억하는 것


 예를 들어서 설명하면:

  1. Jane이 로그인할 때 ID/PW를 입력해
  2. 서버는 “Jane 로그인 성공!” → 세션 저장소에 이런 식으로 저장함:
  3. 세션 ID: abc123 내용: { userId: 77, username: "Jane", isLoggedIn: true }
  4. 클라이언트는 abc123 이라는 세션 ID를 쿠키에 저장해서 매번 서버에 보냄
  5. 서버는 abc123 을 보고, Jane이라는 사용자가 로그인한 상태인지 판단함

그래서...

  • 세션 = “Jane이라는 사용자가 로그인된 상태다”는 정보를 저장해둔 공간
  • 클라이언트는 그걸 세션 ID라는 열쇠(쿠키) 로 계속 들고 다니는 것

 

로그인 정보 ID/PW 같은 민감한 정보 (요청 시 한 번만 사용)
세션 로그인 성공 후, 인증된 사용자 상태를 서버에 저장
세션 ID 그 상태를 식별할 수 있는 키 (클라이언트는 이걸 쿠키에 저장)

 

세션이랑 쿠키는 '함께' 쓰는 것

 간단한 구조 요약

  1. 사용자 로그인 → 서버가 세션 생성
  2. 서버는 세션 ID를 클라이언트에게 쿠키로 전달
  3. 클라이언트는 쿠키를 저장하고, 다음 요청에 자동으로 세션 ID를 보냄
  4. 서버는 쿠키에 담긴 세션 ID를 보고, 세션 저장소에서 사용자 정보 확인
  5.  



세션기반의 인증의 키포인트는

사용자의 로그인 상태를 서버에서 관리하고 있다 ✎

 

 

* 유저의 로그인 정보를 서버에서 관리하고 있기 때문에, 유저가 직접 로그아웃 하지 않더라도 서버쪽에서 강제로 로그아웃 시킬 수 있음

 

 

세션 기반으로 인증 구현한 사례

 

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 무작위화 예측 불가하게 해서 탈취 방지

 

세션 기반 인증은 “누가 로그인했고, 어떤 상태인지”를 서버에서 안전하게 관리하는 모든 기능의 핵심!

 


출처: 챗지피티, 오즈코딩스쿨 학습자료