안녕하세요. 지난 시간에는 401(UnAuthorized)과 403(Forbidden) ExceptionHandler를 Spring Security에서 어떻게 처리하는지에 대해서 알아보았습니다. 이때 /auth 라는 Path에 대하여 인증과 권한(ROLE_AUTH)을 부여하여 성공적으로 스프링 시큐리티에서 인증하는 것을 볼 수 있었습니다. https://sas-study.tistory.com/362 Restful API 구현을 위한 Spring Security 설정해보기 #4 (AuthenticationEntryPoint, AccessDeniedHandler 구현) 안녕하세요. 지난 시간에는 /auth Path에 대하여 무조건 인증을 해보고 성공적인 Response를 반환받아보는 과정을 겪어보았습니다. ..
안녕하세요. 지난 시간에는 /auth Path에 대하여 무조건 인증을 해보고 성공적인 Response를 반환받아보는 과정을 겪어보았습니다. https://sas-study.tistory.com/360 Restful API 구현을 위한 Spring Security 설정해보기 #3 (인증 Filter) 안녕하세요.! 지난 시간에 UserDetails 와 UserDetailsService 인터페이스를 구현하여 인증대상객체와 인증 서비스 로직을 구현해보았습니다. 지난 포스팅을 먼저 확인해주시고 이번 내용을 따라와주시� sas-study.tistory.com 이제 /permit-all Path에 대해서는 사실 따로 적용해볼 설정은 없습니다. -> 완전 퍼블릭한 API이기 때문입니다. 누구나 접근 가능하지요. 근데..
안녕하세요. 오늘은 JPA를 이용하여 @Entity 클래스를 설계하는 도중 공통 속성인 created_at(insert time), updated_at(update time) 컬럼에 대하여 모든 @Entity 클래스에서 공통적으로 소유할 가능성이 보여 따로 공통 엔티티 클래스인 BaseEntity 클래스로 분리하는 방법에 대해 소개하겠습니다. 먼저 기존 코드입니다. @AllArgsConstructor @Getter @ToString @EqualsAndHashCode(of = "user_seq") @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Lon..
안녕하세요.! 지난 시간에 UserDetails 와 UserDetailsService 인터페이스를 구현하여 인증대상객체와 인증 서비스 로직을 구현해보았습니다. 지난 포스팅을 먼저 확인해주시고 이번 내용을 따라와주시면 더 이해가 잘 될것 같습니다. https://sas-study.tistory.com/359 Restful API 구현을 위한 Spring Security 설정해보기 #2 (UserDetails, UserDetailsService 인터페이스 구현) 안녕하세요. 오늘은 이전 포스팅에서 다뤘던 Java 설정파일에 이어서 인증로직을 구현해보겠습니다. 흐름을 파악하시기 위해서 이전 포스팅 내용을 확인 후 진행하시는 편을 추천드립니다.! https sas-study.tistory.com 지난 두개의 스..
안녕하세요. 오늘은 이전 포스팅에서 다뤘던 Java 설정파일에 이어서 인증로직을 구현해보겠습니다. 흐름을 파악하시기 위해서 이전 포스팅 내용을 확인 후 진행하시는 편을 추천드립니다.! https://sas-study.tistory.com/357 이전 포스팅에서는 별다른 인증로직 없이 /permit-all 과 /auth 매핑 주소로 인증을 나눠봤습니다. 단순히 permit-all은 인증 여부와 관련없이 통과되는 url이고, /auth는 인증여부에 따라 성공하거나 실패하는 경우로 나눠봤어요. 그런데 /auth는 인증로직이 별도로 구현되지 못했기 때문에 항상 403(Forbidden)을 내려줬을 것입니다. 오늘 해볼 작업은 /auth url 에서 200(성공) 코드를 얻어보는 작업을 해보겠습니다. 그 중에서 ..
이전 포스팅이 있으니 먼저 진행해보시기를 추천드립니다.!! https://sas-study.tistory.com/356 오늘은 지난 컨트롤러 작성한 부분에서 Spring Security 를 적용해보겠습니다. 프로젝트 구조는 다음과 같습니다. configuration 패키지에 SecurityConfig 자바파일을 추가해주었습니다. 소스 살펴보기 TestController.java @RequiredArgsConstructor @RequestMapping("/api/v1/test") @RestController public class TestController { private final TestService testService; @GetMapping("/permit-all") public Object ge..
안녕하세요. 오늘은 스프링 프로젝트들 중에서 단연 최고 난이도로 알려져 있는 Spring Security 설정해보기 시리즈 중 첫번째 단계인 스펙정의 및 사전작업에 대해서 설명해드리고자 합니다. 제목부터 확인해볼까요? Restful API 구현을 위한 Spring Security 설정해보기 1. Session Stateless Restful API 라는 것은 여러가지 의미가 담겨있습니다. API URL에 대한 내용이 있을 수 있고, Session Stateless 라는 개념이 있을 수도 있고, Spring Hateoas와 관련된 link 기능을 제공하는 것과 관련이 있습니다. 이러한 여러가지 중에서 Spring Security에서 담당해야할 부분은 인증과 권한, 이 두 개념과 관련이 있는 Session ..
안녕하세요. 오늘은 최초 프로젝트 구조를 잡을 때, 에러처리가 굉장히 중요한데요. 자바에서 에러처리는 try/catch 문을 활용하거나 throws Exception과 같은 문법을 활용하는데요. 스프링에서 관점지향 프로그래밍인 AOP와 @RestControllerAdvice, @ExceptionHandler를 이용하여 전체적인 에러처리하는 방법에 대해서 공유하고자 합니다. 구조는 아래와 같이 만들어보았습니다. 프로젝트 구조 Request 요청이 지나가는 순서대로 소스를 살펴보겠습니다. 1. RestControllerAspect.java @Aspect @Component public class RestControllerAspect { /** * Controller 클래스 프록시 * @param procee..