728x90
Spring Security
- Spring 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크
💡 Warm Up
- Principal : 리소스에 접근하는 대상
- Authentication : 인증 - 사용자가 본인이 맞는 지 확인
- who are you?
- Authorization : 인가 - 사용자가 리소스에 접근할 수 있는지 확인
- what are you allowed to do?
Web Security
- 클라이언트는 애플리케이션에 요청을 보내고 컨테이너는 요청 URI의 경로를 기반으로 어떤 필터와 서블릿을 적용할 지 결정한다.
- 세부적으로는 위와 같은 구조로 매핑되는 데, Spring Security의 내부 필터의 사용에 대해서 프로그래머가 관여할 필요는 없다.
- 애플리케이션내 모든
@Bean
에 Spring Security 가 자동으로 적용되기 때문. - 기본적으로 적용된 Spring security 설정을 끄기 위해서는 설정 파일내에
security.basic.enabled=false
부분을 기입하여 설정 자체를 끌 수 있다. - 그 밖에 보안 단계를 낮추려면 SecurityProperties 파일 설정 자체를 바꿔준다.
SecurityProperties.BASIC_AUTH_ORDER
Example Code
@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER - 10)
public class ApplicationConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/match1/**")
...;
}
}
🔒 Web Request Security
📄 pom.xml
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 해당 의존성 부분을 추가해준다.
→ Spring Security
를 적용하면 웹 애플리케이션 구동 시, 스프링 시큐리티 인증 부분을 무조건 거치게 된다.
- SecurityConfig 클래스에 configure 메서드를 오버라이딩 한다.
@Override
protected void configue(HttpSecurity http) throws Exception {
...
}
HttpSecurity
객체 사용에 따른 보안- http 요청 처리 허용 전에 충족되어야할 특정 보안 조건을 구성한다.
- 커스텀 로그인 페이지를 구성한다.
- 사용자가 애플리케이션의 로그아웃을 할 수 있도록 한다.
- CSRF 공격으로부터 보호하도록 구성한다.
- Scenario #1 :
/show
와/orders
요청은 인증된 사용자에게만 허용한다.
...
@Override
protected void configure(HttpSecurity http) throw Exception {
http
.authorizeRequests()
.antMatchers("/show", "/orders")
.hasRole("ROLE_USER")
.antMatchers("/", "/**").permitAll();
}
/show
와/orders
요청은ROLE_USER
의 권한을 갖는 사용자에게만 허용된다.- 이외의 모든 요청은 모든 사용자에게 허용된다.
Spring Security Access Method
Reference
728x90
'🏠 Framework > Spring' 카테고리의 다른 글
[Spring] DI(Dependency Injection) (0) | 2022.05.04 |
---|