복붙노트

[SPRING] Spring Security가 새로운 세션을 생성하는 것을 멈추는 방법?

SPRING

Spring Security가 새로운 세션을 생성하는 것을 멈추는 방법?

내 컨트롤러에서 www.someurl.com에 대해 알아 차린 것은 2 단계와 4 단계에서 세션 ID가 다르다는 것입니다. 스프링 보안이 새로운 세션을 만들고 그 세션이 이제 공개 페이지 요청에 첨부 된 것처럼 보입니다. 왜 이런 일이 일어나고 Spring Security가 기존 세션을 사용하도록 강제 할 수 있습니까?

해결법

  1. ==============================

    1.진단에 문제가 있습니다.

    진단에 문제가 있습니다.

    그것은 정확하게 모든 페이지가 동일한 세션을 사용하기 때문에 첫 번째 탭으로 돌아가서 새로 고침 할 때 여전히 관리자로 로그인되어 있습니다. 지정된 브라우저의 모든 탭과 프레임은 주어진 웹 애플리케이션에 대해 동일한 세션을 공유합니다. 그것이 작동하는 방법입니다. 서버는 브라우저 탭을 모르고 걱정하지 않습니다. 주어진 브라우저가 보낸 모든 요청에 ​​첨부 된 세션 쿠키를 가져오고이 쿠키를 사용하여 해당 세션을 가져옵니다. 이것은 실제로 좋은 일입니다. 이 기능이 없으면 이미 인증 된 새 탭을 열 때마다 다시 인증해야합니다. 그리고 당신은 확실히 그것을 원하지 않습니다.

    시나리오에서 어떤 일이 발생하는지 설명해 보겠습니다.

    편집 : 내가 틀렸어 나타납니다, 그리고 봄 실제로 세션 고정 공격을 방지하기 위해 로그인 후 새로운 세션을 만듭니다. 이 기능이 유용한 이유와이 동작을 피하는 방법에 대한 설명은 설명서에서 사용할 수 있습니다.

  2. ==============================

    2.HttpSessionRequestCache의 동작을 변경하여 세션이없는 경우 세션을 만들지 않도록해야합니다.

    HttpSessionRequestCache의 동작을 변경하여 세션이없는 경우 세션을 만들지 않도록해야합니다.

    다음과 같이 XML 구성에서 인스턴스를 작성하여이를 수행 할 수 있습니다.

    <beans:bean id="httpSessionRequestCache" class="org.springframework.security.web.savedrequest.HttpSessionRequestCache"> 
        <beans:property name="createSessionAllowed" value="false" /> 
    </beans:bean>
    

    그런 다음 bean 인스턴스를 사용하도록 스프링 보안 설정에서 http 요소를 구성해야한다.

    <http auto-config="true" ....> 
        <request-cache ref="httpSessionRequestCache"/> 
        ... rest of your config
    </http>
    

    JSP를 사용하는 경우 JSP가 세션을 만들지 못하게해야합니다. 이를 수행하려면 모든 JSP (다른 JSP에서 포함 된 JSP 포함) 위에 페이지 지시문을 추가해야합니다.

    <%@ page session="false" %>
    
  3. from https://stackoverflow.com/questions/14176853/how-to-stop-spring-security-from-creating-a-new-session by cc-by-sa and MIT license