WebSecurityConfig

young·2024년 3월 27일
0

Spring Security

목록 보기
3/7
post-thumbnail
// 특정 Http 요청에 대한 웹 기반 보안 구성
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http)throws Exception{
        return http.
                authorizeRequests()
                    .requestMatchers("/login","/signup","/user").permitAll()
                    .anyRequest().authenticated()
                .and()
                .formLogin()
                    .loginPage("/login")
                    .defaultSuccessUrl("/articles")
                .and()
                .logout()
                    .logoutSuccessUrl("/login")
                    .invalidateHttpSession(true)
                .and()
                .csrf().disable()
                .build();
    }

requestMatcher() : 특정 요청과 일치하는 url에 대한 액세스 설정
permitAll() : 누구나 접근이 가능하게 설정 -> 인증/인가 없이도 접근할 수 있음
anyRequest() : 설정한 url 이외의 요청에 대해서 설정함
authenticated() : 별도의 인가는 필요하지 않지만 인증이 성공된 상태여야 접근할 수 있음

  • 폼 기반 로그인 설정
    loginPage() : 로그인 페이지 경로 설정
    defautlSuccessUrl() : 로그인이 완료되었을 때 이동한 경로 설정함

  • 로그아웃 설정
    logoutSuccessUrl() : 로그아웃이 완료되었을 때 이동할 경로 설정
    invalidateHttpSession() : 로그아웃 이후에 세션을 전체 삭제할 지 여부 설정

-csrf 설정 비활성화
** CSRF 공격을 방지하기 위해서는 활성화하는 게 좋음

/**인증 관리자 관련 설정*/
@Bean
public AuthenticationManager authenticationManager(HttpSecurity http, BCryptPasswordEncoder bCryptPasswordEncoder, UserDetailsService userDetailsService) throws Exception{
    return http.getSharedObject(AuthenticationManagerBuilder.class)
            .passwordEncoder(bCryptPasswordEncoder)
            .and()
            .build();
}

-> 사용자 정보 가져올 때 재정의하거나 인증방법 등을 설정할 때 사용함

  • 사용자 서비스 설정
    userDetatilsService() : 사용자 정보를 가져올 서비스를 설정 . 반드시 UserDetailsService 상복받은 클래스여야만 함
    passwordEncoder() : 비밀번호를 암호화하기 위한 인코더 설정
profile
ฅʕ•̫͡•ʔฅ

0개의 댓글