[java] 스프링 시큐리티에서의 개별 페이지 보호 설정

스프링 시큐리티를 사용하면 웹 애플리케이션의 보안을 쉽게 구현할 수 있습니다. 시큐리티를 사용하여 접근 권한을 가진 사용자만이 특정 페이지에 접근할 수 있도록 설정할 수 있습니다. 이를 위해 스프링 시큐리티에서 intercept-url 엘리먼트를 사용하여 개별 페이지의 보호 설정을 할 수 있습니다.

<http>
   <!-- 기본 보안 설정 -->
   <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
   <intercept-url pattern="/user/**" access="hasAnyRole('ROLE_ADMIN', 'ROLE_USER')" />
   <intercept-url pattern="/" access="permitAll" />
   
   <!-- 사용자 정의 보안 설정 -->
   <intercept-url pattern="/private/**" access="isAuthenticated()" />
   
   <!-- 로그인 페이지 설정 -->
   <form-login login-page="/login" default-target-url="/home" authentication-failure-url="/login?error" />
   
   <!-- 로그아웃 설정 -->
   <logout logout-success-url="/logout" />
</http>

위의 예시에서 /admin/**는 “ROLE_ADMIN” 권한을 가진 사용자만 접근할 수 있으며, /user/**는 “ROLE_ADMIN” 또는 “ROLE_USER” 권한을 가진 사용자만 접근할 수 있습니다. /private/**는 인증된 사용자만 접근할 수 있도록 설정되어 있고, /는 모든 사용자가 접근할 수 있는 페이지입니다.

또한, form-login 엘리먼트를 사용하여 로그인 페이지를 설정하고, default-target-url은 로그인 성공 후 이동할 페이지, authentication-failure-url은 로그인 실패 시 이동할 페이지를 지정할 수 있습니다. logout 엘리먼트는 성공적으로 로그아웃 한 후 이동할 페이지를 설정하는 데 사용됩니다.

이러한 보안 설정을 통해 스프링 시큐리티를 사용하는 웹 애플리케이션의 특정 페이지를 보호할 수 있습니다.

참고 자료: