흐름(4)
-
Spring Security - 인증 플로우, AuthenticationManager, AuthenticationProvider
인증 플로우 AuthenticationManager 실제 인증역할은 하지 않는다. 필터에서 인증 객체를 받아 Form 인증, RememberMe 인증, OAuth 인증 등, 인증 요청에 따라 그에 맞는 AuthenticationProvider를 찾아 실제 인증 역할을 위임한다. AuthenticationProvider ID검증, Password검증, 추가검증을 하고 인증에 성공하면 UserDetails 객체를 AuthenticationManager에 리턴한다. ID검증: UserDetailsService에서 ID를 가진 사용자가 있는지 검증한다. 없으면 UserNotFoundException을 생성한다. Password검증: 서버에 저장된 암호화된 비밀번호를 복호화하고 클라이언트에서 요청온 비밀번호와 비..
2021.04.17 -
Spring Security - Remember me, 자동 로그인 API, RememberMeAuthenticationFilter
사용 예제 1 2 3 4 5 6 7 http .rememberMe() .rememberMeParameter("remember") // rememberme 파라미터. 기본값은 remember-me .tokenValiditySeconds(3600) // 유효기간 설정. 기본값은 14일 .alwaysRemember(true) // 사용자가 remember me를 체크하지 않아도 true이면 항상 remember me 작동. .userDetailsService(userDetailsService) // 사용자 정보를 조회함. 정보를 어디에 저장했느냐에 따라 다양한 구현체 존재. ; Colored by Color Scripter cs RememberMeAuthenticationFilter 흐름 RememberMeA..
2021.04.15 -
Spring Security - Logout 흐름, LogoutFilter
로그아웃 요청이 온다 LogoutFilter가 요청을 받아 RequestMatcher로 요청정보 매칭을 확인한다. 요청정보가 매칭되면 SecurityContext에서 인증객체를 가져와 LogoutHandler를 실행한다. Spring Security는 이미 여러 핸들러를 만들어놨고, 각 핸들러에서 로그아웃시 필요한 세션 무효화, 쿠키삭제, SecurityContext에서 인증객체 삭제 등 기본 작업을 수행한다. 이 때, 사용자가 정의한 핸들러(addLogoutHandler())도 같이 수행된다. 로그아웃이 성공하면 성공 핸들러(logoutSuccessHandler())가 수행된다.
2021.04.15 -
SPRING SEQURITY - Form Login 인증 흐름, AuthenticationFilter
로그인 요청을 한다. AuthenticationFilter가 요청을 받아, RequestMatcher를 생성해 요청 정보가 매칭되는지 확인한다. 요청정보가 매칭된다면 인증객체(Authentication)을 생성한다. AuthenticationManager에게 인증 객체를 이용해 인증 요청을 하고 AuthenticationManager는 AuthenticationProvider에게 인증 요청을 위임한다. AuthenticationProvider는 인증 객체를 분석하여 username, password를 보고 인증 성공 여부를 판단한다. 인증이 성공되면 AuthenticationManager는 인증객체를 새로 생성한다. 이 때, 인증객체는 사용자 정보와, 권한 정보를 가진다. 해당 인증객체를 Security..
2021.04.15