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

Spring Security Reference


Reference

 

Spring Security Architecture

this topical is designed to be read and comprehended in under an hour, it provides broad coverage of a topic that is possibly nuanced or requires deeper understanding than you would get from a getting started guide

spring.io

 

728x90

'🏠 Framework > Spring' 카테고리의 다른 글

[Spring] DI(Dependency Injection)  (0) 2022.05.04