티스토리 뷰

카테고리 없음

HttpSecurity

eyoadgkn 2024. 5. 9. 22:30
HttpSecurity
HttpSecurity는 Spring Security 프레임워크에서 제공하는 클래스로, HTTP 보안 구성을 정의하는 데 사용됩니다.
이 클래스를 통해 웹 애플리케이션의 보안 정책을 설정할 수 있습니다.


URL 기반 보안 설정: HttpSecurity를 사용하여 특정 URL 패턴에 대한 접근 권한을 설정할 수 있습니다. 예를 들어, /admin/** 경로에 대해서는 ADMIN 권한이 필요하도록 설정할 수 있습니다.

인증 및 권한 설정: HttpSecurity를 통해 사용자 인증 방식과 권한 부여 정책을 구성할 수 있습니다. 예를 들어, 폼 기반 인증, OAuth2, JWT 토큰 기반 인증 등 다양한 인증 방식을 설정할 수 있습니다.

CSRF 보호, XSS 보호 등보안 기능 설정: HttpSecurity를 사용하면 CSRF 보호, XSS 보호, 캐시 제어 등 다양한 보안 기능을 손쉽게 설정할 수 있습니다.

커스터마이징 가능: HttpSecurity는 유연한 API를 제공하므로, 애플리케이션의 요구사항에 맞게 보안 정책을 커스터마이징할 수 있습니다.

HttpSecurity를 사용해 보안 정책을 설정하는 예시 코드

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
            .and()
            .logout()
                .permitAll()
            .and()
            .csrf()
                .disable(); // CSRF 보호 비활성화
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
                .withUser("user").password("{noop}password").roles("USER")
            .and()
                .withUser("admin").password("{noop}password").roles("ADMIN");
    }
}

 

/ 및 /home 경로에 대해서는 모든 사용자 접근을 허용합니다.
/admin/** 경로에 대해서는 ADMIN 권한이 필요합니다.
그 외의 모든 경로에 대해서는 인증된 사용자만 접근할 수 있습니다.
폼 기반 로그인 페이지를 /login으로 설정합니다.CSRF 보호 기능은 비활성화합니다.

이처럼 HttpSecurity를 사용하면 애플리케이션의 보안 정책을 체계적으로 관리할 수 있습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함