전공영역 공부 기록

스프링시큐리티 2편 - 세션

악분 2021. 10. 31. 21:11
반응형

 

2편에서는 세션이 무엇이고 스프링시큐티가 어떻게 세션을 사용하는지 설명합니다.

 

▶ 영상(13:15 ~ 20:55): https://youtu.be/ewslpCROKXY?t=798 

 

1. 세션이란?

클라이언트와 서버의 연결정보를 세션이라고 합니다. 서버는 연결요청을 관리하기 위해 세션을 메모리에 저장해서 관리합니다.

 

tomcat(서블릿 컨테이너)은 클라이언트 요청에 대한 세션을 메모리에 저장하고 클라이언트한테 JSESSIONID라는 쿠키로 세션ID를 전달합니다. 클라이언트는 서버에게 요청할 때마다 JSESSIONID를 전달하게 되고, tomcat은 JSESSIONID를 확인하고 이전 클라이언트 연결정보를 계속 관리합니다.

 

웹 브라우저 개발자 도구에서 JSESSIONID를 확인할 수 있습니다.

그림1 서블릿이 생성하는 세션정보

 

2. 스프링시큐리티는 세션을 어떻게 이용하는가?

스프링 시큐리티는 로그인을 성공하면 인증정보를 세션에 저장합니다. 그리고 인증/인가가 필요할 때 세션에 저장된 인증정보를 확인합니다.

그림2 서블릿 컨테이너와 스프링시큐리티의 세션관리

 

3. 세션탈취공격

스프링시큐리티는 세션 보안설정 등 세션설정을 제공합니다. 이를 적절히 활용하여 실제 서비스할 때는 세션설정을 해야 합니다.

 

한 예로 세션탈취공격이 있습니다. 영상(https://youtu.be/ewslpCROKXY?t=1016)에서 설명하는 것처럼 로그인한 A사용자의 세션을 해커가 사용하면, 해커는 로그인 과정 없이 A사용자로 자동 로그인됩니다. 

 

4. 프론트엔드 연동

프론트엔드는 스프링시큐리티에게 인증/인가를 요청하려면, 요청할 때마다 쿠키에 JSESSIONID를 전송해야 합니다. 

그림3 frontend와 backend 연동

반응형