-
Spring Security JWT - 시큐리티 설정Framework & Library/Spring Security 2021. 10. 7. 19:43
User 객체 생성
@Data @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String username; private String password; private String roles; public List<String> getRoleList() { if (this.roles.length() > 0) return Arrays.asList(this.roles.split(",")); return new ArrayList<>(); } }
ㆍ model 패키지를 만든 후 사용자의 정보를 정의한 User 객체를 생성한다.
ㆍ User 객체는 id, username, password, roles와 같은 정보를 가진다.
SecurityConfig 클래스 생성
@Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터 체인에 등록됨 @RequiredArgsConstructor public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 세션을 사용하지 않겠다는 설정 .and() .formLogin().disable() // 별도의 로그인 페이지 사용하지 않음 .httpBasic().disable() // 기존의 http 방식 사용하지 않음 .authorizeRequests() .antMatchers("/api/v1/user/**").access("hasRole('ROLE_USER') or hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')") .antMatchers("/api/v1/manager/**").access("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')") .antMatchers("/api/v1/admin/**").access(" hasRole('ROLE_ADMIN')") .anyRequest().permitAll(); } }
ㆍ config 패키지를 만들고 SecurityConfig 클래스를 생성한 후 위 코드를 작성한다.
ㆍ SecurityConfig 클래스 내에 configure() 메서드를 오버라이딩 함으로써 시큐리티 필터에 대한 설정을 한다.
CorsConfig 클래스 생성
@Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 내 서버가 응답을 할 때 json을 자바스크립트에서 처리가 가능하도록 설정 config.addAllowedOrigin("*"); // 모든 ip에 응답을 허용 config.addAllowedHeader("*"); // 모든 header에 응답을 허용 config.addAllowedMethod("*"); // 모든 post, get, put, delete, patch 요청을 허용 source.registerCorsConfiguration("/api/**", config); return new CorsFilter(source); } }
ㆍ config 패키지 내에 CorsConfig 클래스를 생성한다.
ㆍ CorsConfig 클래스 내에 corsFilter() 메서드를 생성하고 위 코드를 작성한다.
ㆍ corsFilter() 메서드는 CORS에 대한 인증이 필요한 모든 요청을 허용하도록 해주는 메서드이다.
corsFilter 등록
ㆍ 위에서 생성한 corsFilter가 동작을 하기 위해서는 시큐리티 필터에 등록할 필요가 있다.
ㆍ 우선 의존성 주입을 통해 CorsFilter 객체를 생성한다.
ㆍ 생성한 CorsFilter 객체를 addFilter() 메서드를 통해 시큐리티 필터에 등록한다.
728x90'Framework & Library > Spring Security' 카테고리의 다른 글
Spring Security JWT - 임시 토큰을 통한 테스트 (0) 2021.10.08 Spring Security JWT - Filter 등록 (0) 2021.10.08 Spring Security JWT - 프로젝트 생성 및 환경설정 (0) 2021.10.07 Spring Security - 네이버 로그인 (0) 2021.10.05 Spring Security - 페이스북 로그인 (0) 2021.10.04