본문 바로가기
SpringBoot

spring security - ip based url pattern access

by ByteBridge 2018. 7. 18.
반응형

/**
* 특정 url 에 대해 허용된 아이피만 접근 하도록 설정 하도록 한다.
* 물론 hasRole 기반으로 해도 되겠지만, 아이피 기반으로 url 접근을 거부 하도록 한다.
* 허용되지 않은 아이피로 url 에 접근시 다시 인증 받도록 한다.
* 스프링에서 제공하는 SpEL 형식으로 추가하도록 한다.
*
* 해당 설정 후 로컬에서 테스트를 진행 하려고 하였으나, 실패 하였다.
* 실패의 원인은 로컬에서 WAS 를 실행시 기본적으로 아이피가 0:0:0:0:0:0:0:1 와 같은 ipv6 이 주소를 가져오도록 하였기 때문이다.
* VM 옵션 혹은 WAS Arguments 값을 수정 해주도록 한다.
* intelliJ: -Djava.net.preferIPv4Stack=true
* 톰캣 WAS : catalina 파일에 JAVA_OPTS 설정 추가.
*
*/
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        
http.authorizeRequests()
.antMatchers("admin/**").access("hasIpAddress('10.0.0.1') or hasIpAddress('10.0.0.1')")
            .antMatchers("user/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')");
        http.csrf().disable();
http.cors();
.
.
.
    }
    
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring()
            .antMatchers(HttpMethod.OPTIONS, "/**");
}
}


반응형