[java] Apache Shiro를 사용한 세션 타임아웃 설정

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);

위 코드에서 DefaultWebSessionManagersetGlobalSessionTimeout 메소드를 호출하여 세션 타임아웃을 설정하였습니다. 인자로는 밀리초 단위의 값을 전달합니다. 이 경우, 1시간(3600초) 동안 세션을 유지합니다.

지연 로그아웃 설정

세션 타임아웃이 지나면 세션은 자동으로 만료됩니다. 그러나 때로는 세션이 만료되지 않은 상태에서 로그아웃을 원할 때가 있습니다. 이를 위해 Shiro는 SessionListener를 제공합니다.

sessionManager.setSessionListeners(Arrays.asList(new CustomSessionListener()));

위 코드에서는 CustomSessionListenerSessionManager에 등록하였습니다. CustomSessionListenerSessionListener 인터페이스를 구현하여 세션 만료 이벤트를 처리할 수 있습니다.

결론

Apache Shiro의 세션 타임아웃 설정은 보안과 성능을 강화하는 데 매우 중요한 역할을 합니다. DefaultWebSessionManager를 사용하여 세션 타임아웃을 설정하고, SessionListener를 통해 지연 로그아웃을 처리할 수 있습니다.

더 자세한 내용을 알아보려면 Apache Shiro 공식 문서를 참조하세요.