본문 바로가기

IT 천국

(127)
[Spring boot] Spring Security 분석 - Session timeout 설정하기 application.properties에서 타임아웃 설정 embedded tomcat을 사용한다면 기본적으로 application.properties에 다음 property로 세션 타임아웃 설정이 가능하다. application.properties:109 # session timeout: unit default SECOND - default 120 minutes server.servlet.session.timeout=10 위에서 설정된 Property값은 부팅시 아래 configuration에 의해 시스템에 로딩된다. org/springframework/boot/spring-boot-autoconfigure/2.5.6/spring-boot-autoconfigure-2.5.6-sources.jar!/or..
[Spring boot] Spring Security 분석 - FilterSecurityInterceptor (Session 인증 기반) 서버 기동 시 embedded tomcat container 기본 설정 org/apache/tomcat/embed/tomcat-embed-core/9.0.54/tomcat-embed-core-9.0.54-sources.jar!/org/apache/catalina/session/ManagerBase.java:388 @Override public void setContext(Context context) { if (this.context == context) { // NO-OP return; } if (!getState().equals(LifecycleState.NEW)) { throw new IllegalStateException(sm.getString("managerBase.setContextNotNew..
[Spring boot] Spring Security 분석 - WebSecurityConfigurerAdapter
[Spring boot] Spring Security 분석 - FilterSecurityInterceptor (Token 인증 기반) 특정 페이지에 권한없는 계정으로 접근 시 아래와 같이 Exception 처리가 된다. handleAccessDeniedException:185, ExceptionTranslationFilter (org.springframework.security.web.access) handleSpringSecurityException:173, ExceptionTranslationFilter (org.springframework.security.web.access) doFilter:142, ExceptionTranslationFilter (org.springframework.security.web.access) doFilter:115, ExceptionTranslationFilter (org.springframework..
[Spring boot] Spring Security 분석 - Authentication 에러 처리 token이 만료되어 Access denied exception이 떳을때 org/springframework/security/access/intercept/AbstractSecurityInterceptor.java:178 attemptAuthorization(object, attributes, authenticated) 를 부를기 전에 SecurityContextHolder.getContext().getAuthentication()를 가져온다. => 따라서 filter에서 SecurityContextHolder.getContext().setAuthentication 를 안해주면 access denied 에러가 발생하게 된다. org/springframework/security/access/intercep..
[Spring boot] Spring Security 분석 - Start 시퀀스 부팅시 beanFactory에 의해 수집된 bean 들을 tomcat start시 등록함. 여기에는 filter class들도 포함됨. 더보기 :62, FilterRegistrationBean (org.springframework.boot.web.servlet) createRegistrationBean:294, ServletContextInitializerBeans$FilterRegistrationBeanAdapter (org.springframework.boot.web.servlet) createRegistrationBean:290, ServletContextInitializerBeans$FilterRegistrationBeanAdapter (org.springframework.boot.web.serv..
[Java] 제네릭(Generic) 분석 T extends 클래스 상속을 이용해서 T의 자료형을 제한함 클래스 선언시 사용하며 인스턴스 생성시 특정 클래스를 상속받은 클래스형만 인스턴스 내부에서 사용할 수 있도록 함 특정 인터페이스를 구현한 클래스만 사용하려는 경우에도 사용 가능 public interface Behavior { void displayName(); } public class Car implements Behavior{ @Override public void displayName() { System.out.println("This is a car."); } } public class Bus implements Behavior{ @Override public void displayName() { System.out.println("..
[Spring boot] Spring Security 분석 - 메소드 Security 설정은 아래와 같이 SecurityConfig 클래스에 어노테이션을 붙여준다. prePostEnabled의 속성은 Spring Security @PreAuthorize, @PostAuthorize 사용 가능 securedEnabled 경우 @Secured 사용 가능 jsr250Enabled의 경우 @RoleAllowed 어노테이션 사용 가능 @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity( securedEnabled = true, jsr250Enabled = true, prePostEnabled = true ) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowi..