본문 바로가기
회고

TIL_211024

코동이 2021. 10. 25.

1. Facts(사실, 객관)

 

- 세션 개념 공부하기

 

2. Feelings(느낌, 주관)

 

- 시큐리티를 계속 공부하다보니 세션에 대한 관심이 생겼습니다. 회사에서 사용하는 방법은 세션을 통한 로그인 인증방식입니다. 세션에 로그인 정보를 저장하고 이를 기반으로 로그인 여부와 유효성을 판단합니다. 세션에 저장된다고는 알고있지만, 왜 세션을 이용하는지, 언제 세션이 생성되는지는 제대로 알고 있지 않아서 공부하였습니다. 토이 프로젝트에서는 단순히 세션만 이용하는 것이 아니라, 한발 더 나아가서 세션 중복 로그인을 제한하고 새로운 로그인 시, 기존 로그인을 해제하는 방식, rememberme까지도 구현할 생각입니다. 

 

3. Findings (배운 점)

 

*세션과 쿠키의 등장 배경이 되는 HTTP의 특징


HTTP는 비 상태 애플리케이션 레벨 프로토콜이다.(stateless)

HTTP는 "상태를 저장하지 않는다" 라는 특징을 가지고 있습니다. 즉, 무언가를 요청받은 사람은(Server) 요청한 사람(Client)의 정보를 저장하지 않고 모든 요청을 독립적으로 취급합니다. 이런 식으로 처리하면 서버는 클라이언트를 위해 별다른 저장공간을 할애하지 않고도 HTTP 서버를 구축할 수 있어서 구성 자체가 간단해지고, 구성이 간단해지니까 많은 양의 요청을 처리할 수 있는 성능을 확보할 수 있습니다.

세션은 HTTP가 지원하지 않는 요청자 정보를 잠시 저장할 수 있는 특별한 저장 공간이기도 하면서, 클라이언트가 서버에 실제는 연결이 되어 있지 않지만 마치 연결이 되어 있는 것처럼 만들어 주는 논리적인 연결 을 의미합니다.


*새로운 세션이 만들어지는 때는 ? 

처음 요청을 받았을 때, 응답에서 새로운 ID를 만들어 클라이언트에 전달한다. (HttpSession이 생성된다.)

쿠키는 클라이언트(브라우저)에 정보를 잠시 저장할 수 있는 특별한 저장공간
쿠키의 큰 특징중 하나는 브라우저가 서버로 요청을 할 때 이 쿠키를 요청서에 포함시킨다는 것입니다. 브라우저가 알아서 요청 헤더에 Cookie 라는 이름으로 딱 넣어서 요청합니다.

서버가 클라이언트 ID를 어떤 방법으로 추적할 것인지 정의한 것을 [세션 트래킹 모드]라고 합니다. 트래킹 모드에는 쿠키 사용 모드, URL Rewriting 모드, SSL 모드 가 있는데 대부분 서버에서 쿠키 사용 모드를 기본값으로 하고 있고 이 모드 사용을 권장하고 있습니다. 그래서 특별한 설정이 없으면 클라이언트를 구분하기 위해 쿠키를 활용하는 것입니다.


세션 정보를 저장하고 있는 서버가 어떤 클라이언트인지 구분하기 위해 세션 ID 를 발급해서 클라이언트로 내려주면 클라이언트는 ID는 쿠키 에 저장합니다. 추후 요청이 있을 때마다 쿠키에 담긴 ID를 같이 보내주어서 서버가 어떤 클라이언트의 요청인지 알 수 있게 합니다. 클라이언트의 세션 ID가 저장된 쿠키를 세션 쿠키라고 부르기도 합니다. (정식 명칭은 아니고 세션ID를 저장하고 있는 쿠키라는 의미입니다)

이런 이유로 Tomcat을 사용하는 서버에 접속하면 JSESSIONID 이라는 키로 쿠키가 만들어져 있는 것을 종종 볼 수 있습니다. 키 이름은 서버 설정으로 바꿀 수 있습니다. 

쿠키를 만들 때 이 쿠키를 언제까지 존속 시켜야 하는지 지정해야 하는데 지정하지 않으면 세션 쿠키(쿠키 종류 중 하나의 세션 쿠키), 지정하면 영속 쿠키(Persistent cookie)가 됩니다. 세션 쿠키는 브라우저를 닫으면 자동으로 삭제되고, 영속 쿠키는 지정한 만료일이 되면 삭제됩니다. 브라우저 닫고 다시 열었을 때 로그인 상태로 남겨두고 싶다면 영속 쿠키에 세션 ID를 저장해야 할 것이고, 아니라면 세션 쿠키에 세션ID를 담도록 해야 할 것입니다. 

 

4. Affirmation (자기 선언)

- 나는 내가 사용하는 기술에 대해 원리를 공부하는 사람이다.

반응형

'회고' 카테고리의 다른 글

TIL_211028  (0) 2021.10.28
TIL_211027  (0) 2021.10.27
TIL_211022  (0) 2021.10.22
TIL_211021  (0) 2021.10.22
TIL_211019  (0) 2021.10.19