spring 24

Spring Security 기본개념 공부 4.

Section 3. UserDetailsService 커스텀 이제 jdbcUserDetailsManager가 아닌 우리만의 로직으로 UserDetails를 정의해보겠다.! 우선 LoadUserByUsername 메소드를 직접 작성해야한다. 그러기 위해 데이터베이스에서 유저 정보를 가져와 UserDetails 객체로 만들어 반환해주는 로직을 작성해줘야한다. public class EazyBankUserDetails implements UserDetailsService { 다음과 같이 UserDetailsService를 구현하여 만든다. @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundExceptio..

Spring Security 기본개념 공부 3.

Section 3. 메모리에 유저 정보를 저장하는 첫 번째 방법 UserDetailsManager를 extends한 InMemoryUserDetailsManager클래스를 정의해주면 된다. @Bean public InMemoryUserDetailsManager userDetailsService(){ UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("12345") .authorities("admin") .build(); UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("12345") .authorities("re..

Spring Security의 기본개념 공부 2.

Section 2. Spring Security의 기본 설정 기본적으로 스프링 시큐리티는 모든 URL을 보호한다. SpringBootWebSecurityConfiguration 클래스를 살펴보자 @Bean @Order(2147483642) SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests((requests) -> { ((AuthorizeHttpRequestsConfigurer.AuthorizedUrl)requests.anyRequest()).authenticated(); }); http.formLogin(Customizer.withDefaults()); h..

Spring Security의 기본개념 공부 1.

Section 1. spring security를 써야하는 이유는 무엇일까? 보안 전문가들이 개발한 spring security를 사용함으로서 우리는 비즈니스 로직에만 집중할 수 있다. 최적화된 코드이기 때문에 최소한의 구성으로 웹 어플리케이션을 보호할 수 있다. 발전해가는 CSRF,CORS등의 취약점에 대비해 spring security팀은 항상 보안 코드를 업데이트 한다. 권한을 부여하여 접근을 제한할 수 있다. 다양한 방법으로 인증 및 인가를 구현할 수 있다. (JWT, OpenId등,, 추후에 배움) 서블릿과 필터 모든 웹사이트는 http 프로토콜을 사용하여 소통한다. 그러나 우리의 자바코드는 그러한 http 요청을 이해할 수 없기에 중재자가 필요하다. 이 중개자를 우리는 서블릿 컨테이너라고 부른..