ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • remember-me
    SPRING/스프링 시큐리티 2021. 8. 1. 17:24

    1. 세션이 만료되고 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능

    2. Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인이 됨.

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        UserDetailsService userDetailsService;
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // 모든 리소스에 대한 인증완료시 접근 허용
            http
                    .authorizeRequests()
                    .anyRequest().authenticated();
            // form Login  사용
            http
                    .formLogin();
            // LogOut
    
            http
                    .logout() // 로그아웃 처리
                    .logoutUrl("/logout") // 로그아웃 처리 URL
                    .logoutSuccessUrl("/login") // 로그아웃 성공 후 이동페이지
                    .addLogoutHandler(new LogoutHandler() { // 로그아웃 후 쿠기 삭제
                        @Override
                        public void logout(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) {
                            HttpSession session = httpServletRequest.getSession();
                            session.invalidate();
                        }
                    })
                    .logoutSuccessHandler(new LogoutSuccessHandler() { // 로그아웃 핸들러
                        @Override
                        public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
                            httpServletResponse.sendRedirect("/login");
                        }
                    })
                    .and()
                            .rememberMe()
                            .rememberMeParameter("remember") // 기본 파라미터명은 remember-me
                            .tokenValiditySeconds(3600) // Default는 14일
                            .userDetailsService(userDetailsService); // 리멤버 미 기능이 활성화되지 않아도 항상 실행
    
        }
    
    }

     

    로그인 화면

    로그인 후 쿠키를 보면 아래와 같이 JSESSIONID 외에 remember-me가 생긴 것을 볼 수 있다.

    JSESSIONID의 Value를 제거해도 remember-me가 있기 때문에 로그인 상태가 유지된다.

    rememberMeParameter의 name

    'SPRING > 스프링 시큐리티' 카테고리의 다른 글

    세션 정책 및 고정세션 공격방지  (0) 2021.08.03
    로그아웃  (0) 2021.08.01
    FORM 인증 - 기본  (0) 2021.08.01
    Security Configuration 클래스 기본 설정  (0) 2021.08.01
    의존성 추가 및 기본 세팅  (0) 2021.08.01
Designed by Tistory.