스프링 시큐리티
스프링 기반 애플리케이션의 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크
인증 : 사용자의 신원 확인
인가 : 사용자의 권한 확인
Security 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'org.springframework.security:spring-security-test'
아이디 user
비밀번호는 콘솔창에!
스프링 시큐리티 설정 파일 만들기
SecurityConfig클래스에 어노테이션을 추가해줍니다.
@Configuration
@EnableWebSecurity
SecurityFilterChain 메소드를 만들고 @Bean 등록
해당 메소드에 인증과 인가에 대한 설정을 하면 됩니다!
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.csrf(AbstractHttpConfigurer::disable) //csrf공격에 대한 보안 해제
.authorizeHttpRequests(authorize ->
//authorize.anyRequest().permitAll() //모든 요청 허용
authorize.requestMatchers("/"
, "/item/main"
, "/member/joinForm"
, "/member/join"
, "/member/loginForm"
, "/member/login").permitAll() //해당 경로는 허가됨
.requestMatchers("/admin/**").hasRole("ROLL_ADMIN") // 권한이 "ADMIN"만 허가됨 (2개면 hasAnyRole)
.anyRequest().authenticated() //나머지는 인증 필요
);
return http.build();
}
인증 인가 허용시킬 파일 넣기
@Bean
public WebSecurityCustomizer configure(){
return (web) -> web.ignoring()
.requestMatchers("/js/**", "/css/**", "/images/**", "/favicon.ico");
}