폼로그인
-GET /login 을 처리
-별도의 로그인 페이지 설정을 하지 않으면 제공되는 필터
-기본 로그인 폼을 제공
-OAuth2 / OpenID / Saml2 로그인과도 같이 사용할 수 있음.
POST /login 을 처리. processingUrl 을 변경하면 주소를 바꿀 수 있다
form 인증을 처리해주는 필터로 스프링 시큐리티에서 가장 일반적으로 쓴다
주요 설정 정보
filterProcessingUrl : 로그인을 처리해 줄 URL (POST)
username parameter : POST에 username에 대한 값을 넘겨줄 인자의 이름
password parameter : POST에 password에 대한 값을 넘겨줄 인자의 이름
로그인 성공시 처리 방법
defaultSuccessUrl : alwaysUse 옵션 설정이 중요
http.formLogin(login-> login.defaultSuccessUrl("/",false)
true로 설정하게되면 로그인 후 root페이지로 다시 이동된다.
successHandler
로그인 실패시 처리 방법
failureUrl
failureHandler
authenticationDetailSource : Authentication 객체의 details 에 들어갈 정보를 직접 만들어 줌.
GET /logout 을 처리
POST /logout 을 요청할 수 있는 UI 를 제공
DefaultLoginPageGeneratingFilter 를 사용하는 경우에 같이 제공됨.
POST /logout을 처리
processiongUrl 을 변경하면 바꿀 수 있음.
로그 아웃을 처리
session, SecurityContext, csrf, 쿠키, remember-me 쿠키 등을 삭제처리 함.
(기본) 로그인 페이지로 redirect
LogoutHandler
void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication);
SecurityContextLogoutHandler : 세션과 SecurityContext 를 clear 함
CookieClearingLogoutHandler : clear 대상이 된 쿠키들을 삭제함
CsrfLogoutHandler : csrfTokenRepository 에서 csrf 토큰을 clear 함
HeaderWriterLogoutHandler
RememberMeServices : remember-me 쿠키를 삭제함.
LogoutSuccessEventPublishingLogoutHandler : 로그아웃이 성공하면 이벤트를 발행함.
LogoutSuccessHandler
void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException;
SimpleUrlLogoutSuccessHandler