Spring Security tag를 사용하다 보면 이런 오류가 발생하는것을 볼 수 있다. [ERROR][o.a.c.c.C.[.[.[.[dispatcherServlet].log:line175] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/common/layout.jsp'.] with root cause org.apache.j..
예전에 CORS(Cross-Origin Resource Sharing)를 filter를 사용해서 설정하는것에 대해 포스팅을 한적이 있다. Spring Security를 사용하면 이렇게 별도의 filter를 만들지 않고 간단하게 CORS 설정을 할 수 있다. SecurityConfig.java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { // http formLogin, headers .. 설정 http.cors(); } @Bean CorsConfi..
springboot로 전환함에따라 web.xml에서 기술을 하던 Spring Security 관련 필터들에 대한 설정을 할 필요가 없어졌다. 그럼 나머지 필터들은 어떻게 등록을 해야하나? web.xml CustomFilter sample.CustomFilter CustomFilter /* springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* 기존의 모습은 이랬다. CustomFilter라는 놈은 request로부터 IP를 가지고 오는 역할을 한다고 가정한다. CustomFilter.java public class CustomFilter implements Filter..
잘 돌아가던 springboot 1.x 기반의 웹프로젝트를 사용하다가 msa 관련 지원이 더 유연한 springboot 2.x 로 전환을 해야 했다. springboot 2.x 로 migration을 하려면 생각보다 많은 부분을 봐야 한다. 기본 spring의 버전도 4.x에서 5.x로 바뀌고 이에 따른 종속성 이슈도 잘 살펴봐야 한다. 다행히 이 웹프로젝트는 spring versions[up 에 따른 이슈는 크게 없었다. 나중에 migration 한 부분을 정리하며 자세히 설명하겠다. 기타 spring 5.x 로 바꿈에 따른 종속성 이슈들을 없애고 서버 기동을 하자 잘 되나 싶었는데 spring security 관련된 ObjectPostProcessor 를 찾지 못했고 이걸 너의 설정에 넣어줘야 한다...
spring security에서는 중복 로그인 방지를 다음과 같이 간단하게 수행할 수 있다. 하지만 login page를 통하지 않고 SSO로 로그인을 하기를 원하는 경우에는 위와 같은 방법이 통하지 않는다. login page를 통해 로그인을 하는 경우라면 AuthenticationFilter (username과 password를 사용하는 form 기반 인증)를 통과하며 유저 인증 처리를 진행하는데 SSO는 이런 과정과는 다르게 직접 인증처리를 구현해야 하므로 위와 같은 concurrency-control 의 제어를 사용할 수 없는 것이다. 그럴때 직접 컨트롤을 통해 중복 로그인 처리를 해줘야 한다. 중복 로그인 처리를 하기 위해서는 가장 중요한점은 현재 세션의 목록을 가지고 올수 있어야 한다. 세션의..