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

에욱님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

인증 컨텍스트 - SecurityContext / SecurityContextHolder -1

클라이언트마다 별도의 쓰레드 할당 질문입니다.

작성

·

45

0

클라이언트마다 별도의 쓰레드가 할당되고 각 쓰레드별로 쓰레드로컬을 가지고있어 여기에 인증객체를 가진 SecurityContext가 저장된다고 설명해주셨습니다. 근데 제가 알기로 같은 사용자더라도 서버에 요청할때마다 다른 쓰레드가 할당되는걸로 아는데 아닌가요? 맞다면 같은 사용자이더라도 요청할때마다 별도의 쓰레드가 할당되므로, 이전 요청에서 로그인인증을 통해 저장했던 SecurityContext는 사용하지 못하는거 아닌가요?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

네 맞습니다

그래서 인증 성공 이후 세션에 SecurityContext 를 저장해 놓는 것입니다.

이후 요청 시 세션으로부터 SecurityContext 를 꺼내어 ThreadLocal 에 저장하고 진행하게 됩니다.

이렇게 되면 계속 인증상태를 유지할 수 있게 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 에욱님.

쓰레드와 SecurityContext에 대한 질문을 주셨군요. 에욱님의 질문과 유사한 주제를 다룬 몇 가지 게시물을 찾아보았습니다. 맥락을 이해하는 데 도움이 되시길 바랍니다.

  1. 쓰레드 생명 주기 관련 질문

    • 쓰레드가 요청마다 새로 할당되더라도, SecurityContext는 HttpSession에서 관리되므로 클라이언트가 재접속할 때 세션에 저장된 정보를 통해 인증 상태를 유지할 수 있습니다.
  2. SecurityContext와 ThreadLocal 사용에 대한 설명

    • 매 요청마다 쓰레드는 재사용되며, SecurityContext 정보는 세션을 통해 유지됩니다. 이를 통해 같은 사용자의 연속된 요청에서도 인증 상태가 유지됩니다.
  3. SecurityContextHolder 관련 질문

    • SecurityContextHolder는 각 사용자마다 스레드가 별도로 할당되며, 요청마다 새로운 쓰레드에서 세션 내용을 가져오도록 설계되어 있습니다. 이로 인해 여전히 인증 상태가 유지됩니다.

이 게시물들은 쓰레드의 생명 주기와 SecurityContext 보존에 대해 추가적인 통찰을 제공합니다. 여전히 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

에욱님의 프로필 이미지

작성한 질문수

질문하기