Spring Security + JWT + OAuth 2.0 기능을 모두 구현하였으니 마지막으로 테스트를 진행해 봅시다. 테스트를 위한 추가 코드 기존에 JWT 기능을 구현하면서 생성한 'TokenApiController' 클래스에 API 테스트를 위한 메서드를 하나 추가해 줍니다. @RequiredArgsConstructor @RestController public class TokenApiController { ... // api 테스트 추가 @PostMapping("/test") public ResponseEntity testApi() { return ResponseEntity.ok() .body("성공"); } } 제가 하고 있는 사이드 프로젝트는 Frontend(FE) 서버가 인증 서버에 OAu..
이제 OAuth 2.0 설정을 위한 Spring Security 설정을 합니다. Gradle 의존성 추가 build.gradle에 Spring Security 의존성 추가를 합니다. implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' OAuthSecurityConfig Spring Security를 활성화시키기 위한 작업을 진행합니다. 저는 Spring Boot 3.2.3 버전을 사용했기 때문에 Spring Security 6.1 버전으로 진행합니다. @RequiredArgsConstructor @Conf..
들어가면서 이전 프로젝트를 진행하면서 OAuth 2.0과 Spring Security를 이용한 회원 기능을 구현한 경험이 있습니다. 그러나 여러 블로그 포스팅을 찾아보면서 OAuth 2.0과 JWT, 그리고 Spring Security를 조합하여 더욱 강력한 인증 및 인가 시스템을 구현한 애플리케이션을 많이 보았습니다. 이에 제가 사전에 충분한 지식을 습득하지 못한 상황에서 새로운 프로젝트 도전하게 되었습니다. 세션 기반 인증과 토큰 기반 인증 이전 프로젝트에서 Spring Security는 기본적으로 세션 기반 인증을 제공해주기 때문에 사용자의 정보를 담은 세션을 생성하고 저장해서 인증하는 방식을 사용했었습니다. 이를 세션 기반 인증이라 부르며, 세션에 접근만 하면 사용자의 정보를 쉽게 가져올 수 있다..
사이드 프로젝트를 진행하면서 Spring Security를 설정 중 Controller의 로그인 페이지가 무한 리다이렉션 오류를 발생시켰습니다. 처음 겪었던 문제이기에 원인을 찾는데 많은 삽질을 한 것 같습니다. Spring Boot가 3.x로 올라가면서 Spring Security도 함께 바뀌었고 이전 방식과 조금 달라진 감이 있습니다. 저는 Spring Security 6.1 버전을 사용하였습니다. Spring Security 설정은 다음과 같습니다.@Beanprotected SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .httpBasic(AbstractHttpConfigurer::dis..
사이드 프로젝트를 진행하면서 Spring Security 6을 적용하며 만났던 문제들을 적은 내용입니다. WebSecurityConfigurerAdapter Deprecated @RequiredArgsConstructor @Configuration @EnableWebSecurity public class config extends WebSecurityConfigurerAdapter { ... } 이전에는 Spring Security의 기본 설정을 위해 WebSecurityConfigurerAdapter 추상 클래스를 상속하여 configure 메서드를 오버라이드하여 설정했습니다. 그러나 Spring Security 5.7.0-M2부터는 WebSecurityConfigurerAdapter가 deprecat..