분류 전체보기
-
[스프링 시큐리티] 세션 고정 보호강의노트/스프링 시큐리티 2020. 9. 10. 19:20
인증에 성공할 때 마다 세션 ID나 세션을 변경해서 발급해줌으로써 세션을 중간에서 가로채더라도 해당 세션이 유효하지 않게 하는 기능 protected void configure(HttpSecurity http) throws Exception { http.sessionManagement() .sessionFixation().changeSessionId() // changeSessionId : 새로운 세션 ID를 발급해서 전달(default) // none : 아무 동작 안함 // migrateSession : 새로운 세션을 생성해서 전달 (속성값 유지) // newSession : 새로운 세션 전달 (속성값 유지 안됨) } 참조 : 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring S..
-
[스프링 시큐리티] 동시 세션 제어강의노트/스프링 시큐리티 2020. 9. 10. 19:05
최대 세션 허용 개수 초과 (동일한 계정으로 생성되는 세션 개수) 시 제어 방법 이전 사용자의 세션 만료 (maxSessionsPreventsLogin : false) 신규 사용자의 인증 실패 (maxSessionsPreventsLogin : true) protected void configure(HttpSecurity http) throws Exception { http.sessionManagement() .maximumSessions(1) // 최대 허용 가능 세션 수, -1인 경우 무제한 세션 허용 .maxSessionsPreventsLogin(true) // 동시 로그인 차단, false인 경우 기존 세션 만료(default) .invalidSessionUrl("/invalid") // 세션이 유..
-
[스프링 시큐리티] AnonymousAuthenticationFilter강의노트/스프링 시큐리티 2020. 9. 10. 17:15
AnonymousAuthenticationFilter 사용에 따른 차이점 익명 사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용 AnonymousAuthenticationFilter 사용 X : Authentication Token이 null 유무 체크 AnonymousAuthenticationFilter 사용 O : 별도의 인증 객체(Anonymous Authentication Token)를 생성해서 사용한다. 인증 여부 체크를 isAnonymous()와 isAuthenticated() 함수를 통해서 구분한다. 인증 객체가 세션에 저장되지 않는다. AbstractSecurityInterceptor 인증 가장 마지막에 인증 여부를 확인하는 Filter AccessDeniedException이 발..
-
[스프링 시큐리티] RememberMeAuthenticationFilter강의노트/스프링 시큐리티 2020. 9. 10. 14:28
RememberMe 세션이 만료되거나 종료 된 후에도 서버에서 클라이언트의 인증 유무를 기억하는 기능 로그인 성공 시 서버에서 쿠키를 헤더에 실어서 발급하게 되고 클라이언트에서는 발급된 쿠키를 가지고 서버에 접근하게 된다. 서버에서는 클라이언트에서 전달 된 쿠키를 이용해서 유효성을 검증한다. 인증 성공(Remember-Me 쿠키 발급) 인증 실패(Remember-Me 쿠키 존재시 삭제) 로그 아웃(Remember-Me 쿠키 존재시 삭제) protected void configure(HttpSecurity http) throws Exception { http.rememberMe() .rememberMeParameter("remember") // 기본 파라미터명은 remember-me .tokenValidi..
-
[스프링 시큐리티] LogoutFilter강의노트/스프링 시큐리티 2020. 9. 10. 13:52
LogoutFilter 기능 세션 무효화 인증 토큰 삭제 SecurityContext에서 해당 토큰 삭제 쿠키 정보 삭제 로그인 페이지로 리다이렉트 protected void configure(HttpSecurity http) throws Exception { http.logout() // 로그아웃 처리 .logoutUrl("/logout") // 로그아웃 처리 Url .logoutSuccessUrl("/login") // 로그아웃 성공 후 이동페이지 .deleteCookies("JSESSIONID", "remember-me") // 로그아웃 후 쿠키 삭제 .addLogoutHandler(logoutHandler()) // 로그아웃 핸들러 .logoutSuccessHandler(logoutSuccessH..
-
[스프링 시큐리티] UsernamePasswordAuthenticationFilter강의노트/스프링 시큐리티 2020. 9. 10. 11:46
UsernamePasswordAuthenticationFilter Form Login 시도 시 인증처리를 담당하고 처리하는 필터 AntPathRequestMatcher 요청 정보가 매칭되는지 확인한다. default는 login이고 loginProcessingUrl을 변경하면 변경 된 정보로 매칭작업 진행한다. Authentication Authentication 객체를 생성 후 사용자가 로그인 할 때 전달된 Username + Password 값을 인증 객체에 저장하고 AuthenticationManager에 인증을 위임한다. AuthenticationManager AuthenticationManager는 내부적으로 AuthenticationProvider 타입의 객체들을 포함하고 있고 이 객체들 중에..
-
[스프링 시큐리티] Form Login 인증강의노트/스프링 시큐리티 2020. 9. 10. 10:42
WebSecurityConfigurerAdapter WebSecurityConfigurer 객체를 생성하기 위한 추상 클래스를 제공한다. 함수 오버라이딩을 통해서 구현을 커스터마이징 할 수 있다. WebSecurityConfigurer WebSecurity를 커스터마이징 할 수 있다. 웹 보안을 활성화 시키기 위해서 @EnableWebSecurity 어노테이션을 적용한다. @EnableWebSecurity 어노테이션을 적용하면 자동으로 WebSecurityConfigureAdapter를 상속받은 Configuration이 WebSecurity에 적용된다. import org.springframework.context.annotation.Configuration; import org.springframew..