Backend에서 여러 기능을 구현하다 보면, 사용자를 몇 가지 종류로 구분해야 하는 경우가 생긴다. 각 사용자는 구분에 따라 할 수 있는 기능도 다르고, 접근 권한도 다르다. Spring Security에서는 이러한 기능을 인가를 통해 구현한다.
Spring Security에서 인증 과정이 여러 클래스를 구현해 복잡하게 진행되었다면, 인가 과정은 훨씬 간단하다. Spring Security의 설정 클래스에서 configure
메소드를 오버라이드한 뒤 특정 path에 필요 권한을 추가하면, Spring Security가 사용자의 권한에 따라 해당 path로의 접근을 허용하거나 차단하기 때문이다.
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// ... 기존 코드들 ...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// form 기반으로 로그인 진행
.formLogin()
.and()
// 각 path에 특정 권한 부여
.authorizeRequests()
// "/test" 경로에 일반 권한인 "Authority" 등이 있는지 확인
.antMatchers("/test1").hasAuthority("Authority1")
.antMatchers("/test2").hasAuthority("Authority2")
.antMatchers("/test3").hasAuthority("Authority3")
.antMatchers("/test4").hasAuthority("Authority4")
// "/user" 경로에 특수한 권한인 "USER" Role이 있는지 확인
.antMatchers("/user").hasRole("USER")
// "/users" 경로에 특수한 권한인 "ADMIN" Role이 있는지 확인
.antMatchers("/users").hasRole("ADMIN")
;
}
// ... 기존 코드들 ...
}
위 코드를 보면 오버라이드된 configure 메소드에서 메소드를 탭으로 구분해 가며 호출한 것을 볼 수 있는데, 이는 formLogin 메소드의 .and() 메소드가 configure의 인자인 http를 반환하는 메소드이기 때문이다. 이런 식으로 configure에선 여러 인증 필터를 자유롭게 추가할 수 있다.
'웹 > Spring' 카테고리의 다른 글
Spring Security를 이용한 세션 확인과 커스텀 인가 (0) | 2022.04.25 |
---|---|
Spring Security에서 JWT를 이용해 인증 토큰 발행하기 (0) | 2022.04.13 |
Spring Security에서 DB에 존재하는 사용자 인증하기 (0) | 2022.04.12 |
Spring 프로젝트에서 Spring Security 사용하기 (0) | 2022.04.12 |
Spring 프로젝트에서 HTTPS 사용하기 (0) | 2022.04.10 |