티스토리 뷰
Spring/Spring Security
[Spring Security] IP 차단 및 허용 url pattern access
Giles Blog 2021. 8. 24. 17:27728x90
[Spring Security] IP 차단 및 허용
Xml 빈설정
/**
* 특정 url에 대해 허용된 아이피만 접근하도록 설정
* 룰 기반인 hasRole 기반으로도 가능하나, 아이피 기반으로 url 접근을 거부하도록 한다.
* 허용되지 않은 아이피로 url에 접근시 다시 인증 받도록 한다.
*
* WAS를 설정하지 않으면 request.getRemoteAddr() => 로컬기준 0:0:0:0:0:0:1 처럼
* ipv6 주소처럼 나타난다.
* ide에서는 vm 옵션을 이용하여 WAS Arguments 값을 수정해주어야하며,
* -Djava.net.preferIPv4Stack=true
* 실제 운영시에도 해당 내용을 WAS에 넣어주어야한다
* 톰캣 WAS는 catalina 파일에 JAVA_OPTS 설정에 추가한다.
*/
// 생략
<http pattern="sample/**" use-expressions="true" create-session="true">
<csrf disabled="true"/>
<http-basic />
<intercept-url pattern="sample/**" access="hasIpAddress('127.0.0.1') or hasIpAddress('192.168.1.100')"/>
</http>
// 생략
SpEL
/**
* 특정 url에 대해 허용된 아이피만 접근하도록 설정
* 룰 기반인 hasRole 기반으로도 가능하나, 아이피 기반으로 url 접근을 거부하도록 한다.
* 허용되지 않은 아이피로 url에 접근시 다시 인증 받도록 한다.
*
* WAS를 설정하지 않으면 request.getRemoteAddr() => 로컬기준 0:0:0:0:0:0:1 처럼
* ipv6 주소처럼 나타난다.
* ide에서는 vm 옵션을 이용하여 WAS Arguments 값을 수정해주어야하며,
* -Djava.net.preferIPv4Stack=true
* 실제 운영시에도 해당 내용을 WAS에 넣어주어야한다
* 톰캣 WAS는 catalina 파일에 JAVA_OPTS 설정에 추가한다.
*/
public class SecurityConfig extends WebSecurityConfiguraerAdapter {
@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')");
http.csrf().disable();
http.cors();
// 생략
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(HttpMethod.OPTIONS, "/**");
}
}
참고 : wooriworld2006.tistory.com/431