[java] JHipster와 세션 관리

세션 관리는 웹 애플리케이션에서 사용자를 식별하고 상태를 유지하기 위해 중요한 요소입니다. 세션 관리를 효과적으로 처리하기 위해 JHipster와 Spring Security를 사용하는 방법을 알아보겠습니다.

세션 관리 기본 설정

JHipster 애플리케이션에서는 spring-sessionspring-session-hazelcast를 사용하여 세션 관리 기능을 제공합니다. 이를 사용하려면 다음과 같이 설정 파일을 수정해야 합니다.

  1. src/main/resources/application.yml 파일을 열고 아래 내용을 추가합니다.
spring:
  session:
    store-type: hazelcast
    timeout: 1800

이렇게 설정하면 JHipster 애플리케이션은 세션을 Hazelcast에 저장하고, 세션의 유효 시간을 1800초(30분)으로 설정합니다.

  1. JHipster 애플리케이션을 시작하고 로그인한 후, 새로운 브라우저 창을 엽니다. 이렇게 하면 로그아웃되지 않은 상태로 애플리케이션에 새로운 세션이 생성됩니다.

  2. Hazelcast 관리 콘솔에 접속하여 세션 정보를 확인할 수 있습니다. 이를 위해 브라우저에서 http://localhost:8081로 접속합니다.

세션 무효화

JHipster 애플리케이션에서는 사용자 로그아웃 또는 지정된 시간 동안 활동이 없을 경우 세션을 무효화하여 보안을 강화합니다.

  1. WebConfigurer.java 파일을 열고, configure() 메소드에 아래 코드를 추가합니다.
http
    .sessionManagement()
        .maximumSessions(1)
        .maxSessionsPreventsLogin(true)
        .expiredUrl("/login");

이렇게 하면 최대 1개 세션만 허용되며, 중복 로그인 시도 시 기존 세션이 무효화되고 /login 페이지로 이동합니다.

세션 기간 연장

JHipster 애플리케이션에서는 사용자 활동이 있을 때마다 세션 기간을 연장하여 자동으로 로그아웃되지 않도록 합니다.

  1. SecurityConfiguration.java 파일을 열고, configure() 메소드에 아래 코드를 추가합니다.
http
    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
    .and().sessionManagement().maximumSessions(1)
    .and().sessionManagement().sessionFixation().migrateSession()
    .and().sessionManagement()
        .sessionFixation().none();

여기서 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)를 추가하여 세션이 사용되는 동안만 생성되도록 합니다.

결론

JHipster와 Spring Security를 사용하여 세션 관리 기능을 구현하는 방법을 알아보았습니다. 세션 유효 시간 설정, 세션 무효화, 세션 기간 연장 등 다양한 기능을 이용하여 웹 애플리케이션의 보안을 향상시킬 수 있습니다. JHipster 공식 문서 및 Spring Security 문서를 참고하여 세션 관리에 대한 더 자세한 정보를 얻을 수 있습니다.

참고 자료: