본문 바로가기

공부 자료/Spring

[Spring Security] Session

[Session]

: 서버와 클라이언트 간의 연결이 활성화 된 상태

(ex. 사용자가 인증에 성공한 상태)

 

- 서버가 클라이언트에 유일하고 암호화된 ID를 부여 (쿠키에 제공)

- 중요 데이터는 서버에 관리 (서버에 데이터를 저장)

 

 

 

세션기반 인증

 

[예시]

세션으로 유저를 저장하는 쇼핑몰에서 김코딩이 장바구니에 물건을 담으려는 경우

 

1) 사용자가 로그인 후 요청(장바구니에 청바지를 넣어줘)

2) DB에 정보를 저장

3) session_id를 반환

4) Set-Cookie에 session_id를 암호화 하여 저장

5) 사용자는 session_id를 가지고 장바구니 요청을 함

6) session_id를 확인 후 장바구니에 요청을 넣음

7) session_id가 유효하면 장바구니에 업데이트를 함

8) 업데이트 후 사용자에게 알림

 

* session_id는 각 세션을 구분할 수 있으며, 클아이언트에 세션 성공을 증명할 수단으로 제공함

따라서, 사용자의 로그인을 유지하기 위한 수단으로 쿠키를 사용하며, 쿠키에는 서버에서 발급한 세션 아이디를 저장함

>> sessioin_id를 발급받은 이후 따로 로그인으로 인증하지 않고 지속적으로 요청을 보낼 수 있음

 

로그아웃을 해야할 경우

- 서버 : 세션 정보를 삭제해야 함

- 클라이언트 : 쿠키를 갱신해야 함 (쿠키는 임의로 삭제가 불가능하기 때문에 key 값을 무효한 값으로 갱신함)