Print
카테고리: [ Java ]
조회수: 10307

1. 목적

특정 경로에 대한 접근제어 설정을 하기 위함

 

2. 의존성 추가

[ pom.xml ]

<!-- security -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
 

3. class file 작성

예시)

import org.springframework.stereotype.Component;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Component
public class Security extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
                http.authorizeRequests()
                    .antMatchers("/path/**").access("hasIpAddress('123.123.123.123') or hasIpAddress('123.123.123.0/24') or hasIpAddress('0:0:0:0:0:0:0:1')")
                    .antMatchers("/path1/paht2/**").access("hasIpAddress('123.123.123.456')");
    }
}
 

4. 비고

-. 보안을 적용하기 위한 메소드

access(String) 주어진 SpEL 표현식이 참이면 접근 허용
anonymous() 익명의 사용자 접근을 허용
authenticated() 인증된 사용자의 접근을 허용
denyAll() 무조건 접근 허용하지 않음
fullyAuthenticated() 사용자가 완전히 인증되면 접근 허용(기억되지 않음)
hasAnyAuthority(String...) 사용자가 주어진 권한 중 어떤 것이라도 있다면 접근허용
hasAnyRole(String...) 사용자가 주어진 역할 중 어떤 것이라도 있다면 접근허용
hasAuthority(String) 사용자가 주어진 권한이 있다면 접근허용
hasRole(String) 사용자가 주어진 역할이 있다면 접근허용
hasIpAddress(String) 주어진 ip 주소로 오는 요청은 참
not() 다른 접근 방식의 효과를 무효화
permitAll() 무조건 접근 허용
rememberMe() 기억하기를 통해 인증된 사용자의 접근을 허용

 

-. Spring Security 에서 사용 가능한 SpEL

authentication 사용자의 인증 객체
denyAll 항상 거짓으로 평가
hasAnyRole(역할목록) 사용자가 역할 목록 중 하나라도 해당하면 참
hasRole(역할) 사용자가 역할이 있는 경우 참
hasIpAddress(주소) 주어진 ip 주소로 오는 요청은 참
isAnonymous() 사용자가 익명이면 참
isAuthenticated() 사용자가 인증된 경우 참
isFullyAuthenticated() 사용자가 완전히 인증된 경우 참(remember-me 로는 인증되지 않음)
isRememverMe() 사용자가 기억하기(remember-me)로 인증된 경우 참
permitAll 항상 참
principal 사용자의 주체 객체