안녕하세요. 오늘은 스프링 시큐리티를 활용하면서 궁금했던 부분을 공부해보았습니다. 스프링 시큐리티는 SecurityContext에 인증된 Authentication 객체를 넣어두고 현재 스레드 내에서 공유되도록 관리하고 있는데요. 아래는 SecurityContext 인터페이스에 기재된 주석의 일부를 발췌했습니다. (SecurirtContext : Interface defining the minimum security information associated with the current thread of execution.) 인증이후 편의적으로 현재 인증된 세션유저를 가져오기 위해 @AuthenticationPrincipal 어노테이션을 통해 UserDetails 인터페이스를 구현한 유저 객체를 주입할 ..
안녕하세요. 지난 시간에는 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이기 때문입니다. 누구나 접근 가능하지요. 근데..
안녕하세요.! 지난 시간에 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 ..
스프링 Bean Validation 이란?? 스프링에서는 JavaBean(getter와 setter를 가지고 있는 자바객체, 흔히 VO, DTO라고 부르는 것들)의 유효성 작업을 진행하기 위해 javax.validation 패키지 내에 있는 여러가지 유효성 관련 클래스들을 활용할 수 있습니다. * 참고로 스프링 부트 2.3 버전 이후부터는 Spring Web 유효성에서 Validation 의존성이 따로 분리되어 별도로 Validation 의존성을 추가해야 javax.validation 패키지를 활용하여 여러가지 유효성 검사를 어노테이션을 통해 활용할 수 있습니다. 대표적으로 오늘 살펴볼 ConstraintValidator 인터페이스를 구현하여 아래와 같이 Email의 유효성 검사를 할 수 있는 Email..