Spring Security - 정수원 2일차
7659 단어 spring securityspring security
5. 인증 API - Logout, LogoutFilter
- request(/logout) 보내면
- Server에서는 세션 무효화, 인증토큰 삭제, 쿠키정보 삭제, 로그인 페이지로 리다이렉트 해줌
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated();
http
.formLogin();
http
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.addLogoutHandler(new LogoutHandler() {
@Override
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
HttpSession session = request.getSession();
session.invalidate();
}
})
.logoutSuccessHandler(new LogoutSuccessHandler() {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
response.sendRedirect("/login");
}
})
.deleteCookies("remember-me");
}
- LogoutFilter → AntPathRequestMatcher(/logout) 실패시 chain.doFilter → Authentication → SecurityContext → SecurityContextLogoutHandler
- 마지막 Handler 에서 세션무효화 ,쿠키 삭제, SecurityContextHandler.clearContext()
6. 인증 API - Remember Me 인증
- 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능
- Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인 된다.
- 사용자 라이플 사이클
- 인증 성공(Remember-Me쿠키 설정)
- 인증 실패(쿠키가 존재하면 쿠키 무효화)
- 로그아웃(쿠키가 졵하면 쿠키 무효화)
.rememberMe()
.rememberMeParameter("remember") // 기본 파라미터명은 remember-me
.tokenValiditySeconds(3600) // Default는 14일
.userDetailsService(userDetailsService);
7. 인증 API - RememberMeAuthenticationFilter
- 인증 객체가 없는경우
- remember-me 쿠키를 가지고 있는 경우
- jsession 쿠키가 없고 remember-me 쿠키가 있을 경우 발동
TokenBasedRememberMeServices
: 유효기간 설정해서 가지고있음PersistenTokenBasedRememberMeServices
: DB에 저장하여 가지고있음
Author And Source
이 문제에 관하여(Spring Security - 정수원 2일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@eldehd9898/Spring-Security-정수원-2일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)