Spring Security - 인가 API, URL 방식
2021. 4. 16. 09:47ㆍSPRING/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로부터 요청이 왔다면 접근을 허용 |
'SPRING > SPRING SECURITY' 카테고리의 다른 글
Spring Security - CsrfFilter (0) | 2021.04.16 |
---|---|
Spring Security - 인증, 인가 예외 ExceptionTranslationFilter, AuthenticationException, AccessDeniedException (0) | 2021.04.16 |
Spring Security - 세션 생성 정책, SessionCreationPolicy (0) | 2021.04.15 |
Spring Security - 세션 고정 보호 API (0) | 2021.04.15 |
Spring Security - 동시 세션 제어 API (0) | 2021.04.15 |