Spring
@RestController 와 @Controller 의 차이
@RestController 와 @Controller 의 차이점 간단하게 얘기하자면 @RestController 는 @Controller + @ResponseBody 입니다. 그렇다면 차이는 @ResponseBody 라는 어노테이션이 더해진 것인데, 스프링은 이 어노테이션이 있는 것만으로 어떻게 구분하고 응답 본문에 메시지를 넣어줄까요? 스프링 부트의 자동 설정을 사용한다면 HttpMesageConverter 의 구현체 중 MappingJackson2HttpMessageConverter 를 사용하여 json 형태로 메시지를 컨버팅하여 body에 넣어줍니다. 스프링이 어떤 메시지 컨버터를 선택하는 지, 또한 view 를 선택하는 경우는 어떠한 경우인지에 대해 알아보겠습니다. HandlerAdapter 스프..
Spring Security (7) - ExceptionTranslationFilter
ExceptionTranslationFilter AbstractSecurityInterceptor 의 하위 클래스에서 AuthenticationException 타입의 예외가 발생하면 처리하는 필터입니다. 처리할 수 있는 예외가 발생하였다면 (AuthenticationException, AccessDeniedException) 인증과 인가에 대한 처리를 해줍니다. 인증실패 - sendStartAuthentication 메소드 호출 인가실패 2-1. 익명사용자(비로그인) : sendStartAuthentication 메소드 호출 2-2. 로그인 사용자 : accessDeniedHandler 에게 처리를 위임 인가 실패 핸들러 커스텀 구현http.exceptionHandling() .accessDeniedH..
Spring Security (6) - LogoutFilter
역할 로그아웃에 대한 처리를 담당하는 필터입니다. 로그아웃 요청이 들어온 경우에만 적용되는 필터입니다. => 로그아웃일 경우에만 뭔가를 실행 LogoutHandler 로그아웃시 필요한 처리를 합니다 Composite 패턴으로 여러 핸들러를 중첩으로 사용할 수 있도록 합니다. CompositeLogoutHandler 가 해당 패턴을 사용할 수 있도록 하는 헬퍼클래스입니다. CsrfLogoutHandler, SecurityContextLogoutHandler 가 기본으로 등록되는 핸들러입니다. LogoutSuccessHandler 로그아웃 후의 처리를 합니다. SimpleUrlLogoutSuccessHandler 를 기본으로 사용합니다. logout options 다양한 옵션으로 로그아웃 처리를 할 수 있습..
Spring Security (5) - SecurityContextPersistenceFilter
SecurityContextPersistenceFilter 는 HttpRequest 와 HttpResponse 를 wrapping 한 HttpRequestResponseHolder 를 SecurityContextRepository 에게 전달하여 SecurityContext 를 반환받습니다. 접속정보가 없으면 SecurityContext 를 새로 생성합니다. 접속정보가 있으면 SecurityContextRepository 로부터 SecurityContext 를 가져옵니다. 저장 장소는 기본적으로 HttpSessionSecurityRepository 이며, 이 클래스는 HttpSession 에 SecurityContext 를 저장합니다. HttpSessionSecurityRepository 의 loadCon..
Spring Security (4) - 기본설정과 JPA 연동
시큐리티 설정 Spring Security는 의존성만 추가해도 기본 인증 폼을 보내줍니다.(Spring boot 사용시 자동으로 auto config 되는 부분이 있음) ==> 자동 설정으로 id 가 user 이고 password 가 콘솔에 출력되는 유저를 생성합니다. Spring security 기본 설정 추가 org.springframework.boot spring-boot-starter-security // java 설정파일 // 시큐리티 설정 파일임을 나타냄 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure..