728x90
✔️ 세션(session)이란?
웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법
일정 시간 동안 같은 사용자로부터 들어오는 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술
쿠키는 클라이언트 측에 데이터를 저장하지만, 세션은 서버 측에 데이터를 저장한다
✔️ 세션 기반 자격 증명의 특징
- 세션은 인증된 사용자 정보를 서버 측 세션 저장소에서 관리한다.
- 생성된 사용자 세션의 고유 ID인 세션 ID는 클라이언트의 쿠키에 저장되어 request 전송 시, 인증된 사용자인지를 증명하는 수단으로 사용된다.
- 세션 ID만 클라이언트 쪽에서 사용하므로 상대적으로 적은 네트워크 트래픽을 사용한다.
- 서버 측에서 세션 정보를 관리하므로 보안성 측면에서 조금 더 유리하다. (토큰에 비해)
- 서버의 확장성 면에서는 세션 불일치 문제가 발생할 가능성이 높다.
- 세션 데이터가 많아지면 질수록 서버의 부담이 가중될 수 있다.
- SSR(Server Side Rendering) 방식의 애플리케이션에 적합한 방식이다.
✔️ 세션 기반 인증
로그인 예시
- 클라이언트가 로그인 정보를 서버에 전달
- 전달받은 정보를 확인하고 일종의 저장소에 저장 (주로 in-memory, 세션 스토어, redis 등과 같은 트랜잭션이 빠른 DB)
- session_id를 반환하고 클라이언트는 쿠키에 저장
- 쿠키에 저장된 session_id를 가지고 다양한 요청을 진행
- 서버는 해당 유저는 인증에 성공했음을 저장소에서 확인하고 요청을 처리해줌
로그아웃 시
- 서버 : 세션 정보를 삭제
- 클라이언트 : 쿠키를 갱신
❗️ 서버가 클라이언트의 쿠키를 임의로 삭제할 수 없음. 대신, set-cookie로 클라이언트에게 쿠키를 전송할 때 세션 아이디의 키값을 무효한 값으로 갱신한다.
728x90
'개발일지 > 웹개발' 카테고리의 다른 글
Spring-boot Github Actions를 이용한 자동배포 (0) | 2023.01.06 |
---|---|
토큰 기반 자격 증명 방식 (0) | 2022.11.23 |
Cookie의 옵션들 (0) | 2022.11.22 |
Hashing, Salt (0) | 2022.11.22 |
Transaction (0) | 2022.11.15 |