스프링 시큐리티 설정을 하는 방법은 Java 클래스, xml 파일 두 가지가 있다. 여기서는 xml 파일 기준으로 설명한다.
위 경로에 xml 파일을 생성 후 아래와 같이 설정해 준다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<http auto-config="true" use-expressions="true">
<session-management invalid-session-url="/">
<!-- 동일 ID의 세션 최대 개수가 한개, 그 이상일 경우는 기존 세션 무효화 -->
<concurrency-control max-sessions="1" error-if-maximum-exceeded="false" />
</session-management>
<!-- 권한에 따라 url 접속 제한 설정 -->
<intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/edu_project/myPage**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<intercept-url pattern="/**" access="permitAll" />
<csrf disabled="true" />
<form-login username-parameter="m_id"
password-parameter="m_pw" login-processing-url="/login"
login-page="/home" default-target-url="/login_success"
authentication-failure-url="/login_fail" />
<remember-me key="remember-key"
token-validity-seconds="604800"
remember-me-parameter="remember-me-param" />
<logout logout-url="/logout" logout-success-url="/logout_After"
invalidate-session="true"
delete-cookies="JSESSIONID,SPRING_SECURITY_REMEMBER_ME_COOKIE" />
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT m_id AS m_id, m_pw AS m_pw, enabled FROM member WHERE m_id = ?"
authorities-by-username-query="SELECT m_id AS m_id, levels AS levels FROM member WHERE m_id = ?" />
<password-encoder ref="bcryptPasswordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean id="bcryptPasswordEncoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />
</beans:beans>
이 포스팅은 시큐리티 연동에 관한 내용이므로, 설정 파일의 개념에 대한 내용은 추후 다른 포스팅에서 하고, 일단은 넘어간다.
3.web.xml 파일에서 context-security.xml 파일 경로 확인 및 시큐리티 필터체인 추가
스프링 프레임워크의 경우 web.xml에서 context-security를 설정 파일로 지정하고 파일 경로를 명시해줘야 하는데, 전자정부 디폴트 설정에서는 사진과 같이 이미 spring 폴더의 context-로 시작하는 파일은 모두 설정 파일이라고 설정이 되어있다. 따라서 아까 사진에서 보여준 경로에 파일 이름까지 알맞게 생성했다면 이 부분은 건드리지 않아도 된다.