티스토리 뷰

728x90

[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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함