spring security - 1 (pom, context, web) xml 설정

2021. 9. 13. 10:46(구)공부/Spring

728x90

pom.xml 스프링 시큐리티 라이브러리들 추가

		<security.version>5.0.6.RELEASE</security.version>
        
        		<!--  스프링 시큐리티  -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-core</artifactId>
			<version>${security.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
			<version>${security.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
			<version>${security.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-taglibs</artifactId>
			<version>${security.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<version>${security.version}</version>
		</dependency>

 

스프링 시큐리티는 단독 설정 가능하기에 security-context.xml 파일 생성

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:security="http://www.springframework.org/schema/security"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
		
	<bean id="customAccessDenied" class="CustomAccessDenied를 만들어둔 경로"></bean>
	<bean id="customLoginSuccess" class="CustomLoginSuccess를 만들어둔 경로"></bean>
	<bean id="customBCryptPasswordEncoder" class="CustomBCryptPasswordEncoder 를 만들어둔 경로"></bean>
	<bean id="bcryptPasswordEncoder" class="BcryptPasswordEncoder 를 만들어둔 경로"></bean>
	<bean id="customUserDetailsService" class="CustomUserDetailsService 를 만들어둔 경로"></bean>
	
	
	
	<security:http>
<!-- hasAuthority('admin')은 계정의 권한이 admin일때 접근 가능하다는 뜻, permitAll은 제한없이 접속가능 -->
<!-- 		<security:intercept-url pattern="/everyBody/**" access="permitAll"/> -->
<!-- 		<security:intercept-url pattern="/admin/**" access="hasAuthority('admin')"/> -->
		
		<!--  csrf 보안 사용할건지 끌거면 true -->
		<security:csrf disabled="false"/>
        
		<!--권한 실패로인한 접속 실패시 표시할 페이지-->
		<security:access-denied-handler ref="customAccessDenied"/>
		
		<!-- 자신이 사용할 로그인 페이지 -->
		<security:form-login login-page="/user/login" authentication-success-handler-ref="customLoginSuccess"/>
		
        <!-- 리맴버미 설정-->
		<security:remember-me data-source-ref="dataSource" token-validity-seconds="604800"/>
		<!-- 리맴버미 쿠키 삭제 -->
		<security:logout logout-url="/logout" invalidate-session="true" delete-cookies="remember-me" logout-success-url="/"/>
		
	</security:http>

	<security:authentication-manager>

		<security:authentication-provider
		user-service-ref="customUserDetailsService">
		
		<security:password-encoder ref="bcryptPasswordEncoder"/>
			
		</security:authentication-provider>
		
	</security:authentication-manager>

</beans>

web.xml - security-context.xml를 로딩할 수 있도록 설정

	<!-- Spring Security -->
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value> /WEB-INF/spring/root-context.xml
		/WEB-INF/spring/security-context.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher
		</listener-class>
	</listener>
728x90

'(구)공부 > Spring' 카테고리의 다른 글

spring security - 2 (controller, login)  (0) 2021.09.16
에러페이지  (0) 2021.09.07
Spring 유효성 검사 - hibernate  (0) 2021.08.24
파일 업로드  (0) 2021.08.16
lombok  (0) 2021.08.04