JAVA/SPRING
[spring security]레거시 프로젝트에 스프링 시큐리티를 적용해보자.(1)
gracelove91
2019. 9. 14. 00:44
레거시 프로젝트는 의존성관리를 메이븐에 맡긴다해도 일일이 추가해줘야하기 떄문에 매우 귀찮다 ㅠ
따라서 스프링 부트의 spring-boot-starter-security
의 자식들을 추가해주겠다.
이외에도 spring-aop
가 있지만, spring-webmvc
에 종속되어있기떄문에 따로 추가는 안했다.
다음으로 시큐리티 설정을 해보자.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.mvcMatchers("/", "/index").permitAll() //이와 같은 요청에는 모든 사용자가 접근가능하다.
.anyRequest().authenticated(); //위와 같이 permit을 준 요청 이외 어떤 요청이든 인증이 필요하다.
}
}
이렇게 코딩을 해도 모든 uri 요청이 다 허용된다. 왜냐면 필터를 안걸어줬기 떄문.web.xml
에 다음과 같이 추가해주자. (한글 인코딩이 깨질 수 있으니 encodingFilter
밑에 추가해줄 것.)
<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>
접속해보자. /index
, /
외 요청에는 403 Access Denied
이 뜨는 걸 볼 수 있다.
/index
와 /
요청은 잘 먹히지만 css가 깨진다
그 이유는 css와 같은 정적리소스 파일들은 /resources
에 매핑되는데, 여기도 권한을 줘야한다 코드를 바꿔보자
http.authorizeRequests()
.mvcMatchers("/resources/**").permitAll()
.mvcMatchers("/", "/index").permitAll()
.anyRequest().authenticated();
http.formLogin(); //기본적인 로그인 form을 사용하겠다.
/resources
요청에 모든 사용자가 접근 가능하게 코드를 바꿨다.
css가 더이상 안깨진다.