인프런 커뮤니티 질문&답변

정재빈님의 프로필 이미지
정재빈

작성한 질문수

스프링 시큐리티

6) Remember Me 인증

로그인 페이지에 접속 하기만 해도 JSSEISONID 값을 가집니다

작성

·

333

0

Cookie 값을 삭제 하며 여러 동작을 해보던 도중,

로그인을 하기 전부터 JSSESSIONID 값이 cookie 에 들어가 있는 것을 확인하였습니다. 처음에는 오류인가 싶어 값을 삭제하고 로그인하였더니, 로그인이 동작하지 않고 그냥 페이지가 reload 된 다음 임의의 JSSESSIONID 값을 가져왔습니다.

왜 reload 할 때마다 JSSESSIONID 값을 가져오는 걸까요?
그리고 왜 JSSESSIONID 값 없이는 로그인 동작 자체가 안 되는 걸까요?

 

답변 2

0

브라우저에 주소 입력하고 엔터 등의 인풋으로 해당 주소로 진입하기 전에 브라우저가 먼저 서버로 요청을 보내서 session이랑 csrf 토큰을 만들어줍니다.

0

안녕하세요, 인프런 AI 인턴입니다.
JSESSIONID 쿠키는 세션을 식별하기 위해 서버에 의해 생성되어 클라이언트(브라우저)에 저장됩니다. 클라이언트가 서버에 요청을 보낼 때 이 쿠키를 함께 전송하면, 서버는 이를 바탕으로 해당 사용자의 세션을 구별하고 세션에 저장된 정보를 유지할 수 있습니다.

로그인 페이지에 접속하면, 서버는 사용자를 식별하고 추후 로그인이 가능하도록 JSESSIONID를 생성합니다. 이는 로그인 이전에도 페이지를 사용하는 동안 사용자의 세션을 유지하기 위함입니다. 이렇게 세션 쿠키 없이 로그인을 시도하면 서버는 사용자를 인증할 수 있는 세션이 없다고 판단하여 로그인을 거부하고 페이지를 새로 고침하며 새로운 JSESSIONID를 발급합니다.

우리가 사용하는 스프링 부트와 스프링 시큐리티는 이러한 세션 관리와 쿠키 설정을 자동으로 처리해줍니다. 만약 SameSite 쿠키 속성을 커스터마이징하고 싶다면, 상세한 구성 방법을 스프링 부트 레퍼런스 문서에서 찾아볼 수 있습니다.

추가적인 스프링 시큐리티에 대한 정보는 스프링 시큐리티 프로젝트 페이지에서 확인하실 수 있습니다.

쿠키를 삭제하는 과정에서 로그인이 작동하지 않는 것은 일반적으로 세션 기반 인증 시스템의 특징으로 볼 수 있으며, 이는 세션 식별자인 JSESSIONID를 통해 인증 과정에 필수적인 정보를 처리하기 때문입니다.

로그인 동작 자체가 JSESSIONID 값 없이 안 되는 이유는 스프링 시큐리티에서는 세션을 통해 인증과 권한 부여 과정을 관리하기 때문이며, CSRF 보호 기능이 활성화된 상태에서 세션 토큰이 없으면 서버는 요청이 유효하지 않다고 판단하게 됩니다.

이러한 세션과 쿠키에 대한 동작 방식은 웹 애플리케이션의 보안을 강화하는 데 도움이 됩니다만, 사용자 입장에서 불편함을 줄 수도 있습니다. 그렇기에 서비스를 설계할 때는 이러한 보안 메커니즘을 잘 이해하고 적절하게 적용하는 것이 중요합니다.

모든 질문과 요청에 대해 항상 최선을 다해서 안내 드리겠습니다. 추가적인 질문이 있으시면 언제든지 문의해주세요.

정재빈님의 프로필 이미지
정재빈

작성한 질문수

질문하기