Spring Security - 인가 API, URL 방식

2021. 4. 16. 09:47SPRING/SPRING SECURITY

사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .antMatcher(“/shop/**”)
        .authorizeRequests()
        .antMatchers(“/shop/login”, “/shop/users/**”).permitAll()
          .antMatchers(“/shop/mypage”).hasRole(“USER”)
        .antMatchers("/shop/admin/pay").access("hasRole('ADMIN')")
          .antMatchers("/shop/admin/**").access("hasRole('ADMIN') or hasRole(‘SYS ')")
        .anyRequest().authenticated();
}
 
cs
  • antMatchers() 메서드로 URL 형식을 지정하고 access()나 hasRole()을 이용하여 권한을 지정해주면, 해당 URL(자원)에 접근시 해당 권한이 있어야한다.
  • 주의 - 설정시, 구체적인 경로가 먼저 나오고 그것 보다 큰 범위의 경로가 뒤에 나와야한다. 이유는 큰 범위의 경로가 먼저 나올 경우, 뒤에 나오는 구체적인 경로가 큰 경로에 모두 포함되어 있기때문에 무효화되기 때문이다.

인가 API 표현식

메서드 동작
authenticated() 인증된 사용자의 접근을 허용
fullyAuthenticated() 인증된 사용자의 접근을 허용, rememberMe 인증 제외
permitAll() 무조건 접근을 허용
denyAll() 무조건 접근을 허용하지 않음
anonymous() 익명사용자의 접근을 허용
rememberMe() 기억하기를 통해 인증된 사용자의 접근을 허용
access(String) 주어진 SpEL 표현식의 평가 결과가 true이면 접근을 허용
hasRole(String) 사용자가 주어진 역할이 있다면 접근을 허용
hasAuthority(String) 사용자가 주어진 권한이 있다면
hasAnyRole(String...) 사용자가 주어진 권한이 있다면 접근을 허용
hasAnyAuthority(String...) 사용자가 주어진 권한 중 어떤 것이라도 있다면 접근을 허용
hasIpAddress(String) 주어진 IP로부터 요청이 왔다면 접근을 허용