Apache Shiro는 자바 기반의 강력한 인증 및 인가 프레임워크입니다. 세션 타임아웃은 보안 및 성능 측면에서 매우 중요한 요소입니다. 이번 블로그 포스트에서는 Apache Shiro의 세션 타임아웃 설정에 대해 알아보겠습니다.
세션 타임아웃 설정 방법
Apache Shiro에서는 securityManager
를 통해 세션 타임아웃을 설정할 수 있습니다. 기본적으로 Shiro는 세션 타임아웃을 지원하며, 이를 설정하려면 SessionManager
를 사용해야 합니다.
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setGlobalSessionTimeout(3600000); // 1 hour
securityManager.setSessionManager(sessionManager);
위 코드에서 DefaultWebSessionManager
의 setGlobalSessionTimeout
메소드를 호출하여 세션 타임아웃을 설정하였습니다. 인자로는 밀리초 단위의 값을 전달합니다. 이 경우, 1시간(3600초) 동안 세션을 유지합니다.
지연 로그아웃 설정
세션 타임아웃이 지나면 세션은 자동으로 만료됩니다. 그러나 때로는 세션이 만료되지 않은 상태에서 로그아웃을 원할 때가 있습니다. 이를 위해 Shiro는 SessionListener
를 제공합니다.
sessionManager.setSessionListeners(Arrays.asList(new CustomSessionListener()));
위 코드에서는 CustomSessionListener
를 SessionManager
에 등록하였습니다. CustomSessionListener
는 SessionListener
인터페이스를 구현하여 세션 만료 이벤트를 처리할 수 있습니다.
결론
Apache Shiro의 세션 타임아웃 설정은 보안과 성능을 강화하는 데 매우 중요한 역할을 합니다. DefaultWebSessionManager
를 사용하여 세션 타임아웃을 설정하고, SessionListener
를 통해 지연 로그아웃을 처리할 수 있습니다.
더 자세한 내용을 알아보려면 Apache Shiro 공식 문서를 참조하세요.