Remember Me 인증
- 흔히 우리가 보고 있는 내 계정 기억하기 기능을 말함.
- 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능
- Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인이 된다.
- 사용자 라이프 사이클
- 인증성공(Remember-Me 쿠키 설정)
- 인증실패(쿠키가 존재하면 쿠키 무효화)
- 로그아웃(쿠키가 존재하면 쿠키 무효화)
RememberMeAuthenticationFilter
- Authentication이 SecurityContext에 저장이 되어 있지 않다면 또는 Form 로그인으로 로그인시 RememberMe 체크박스에 클릭을 하여 접속하여 Client가 쿠키를 가지고 있다면 다음번 Server에 접근시 해당 Cookie를 기반으로 RememberMeAuthenticationFilter를 수행함.
- RemembermeService Interface 수행 (RememberMe 인증 처리를 하는 구역)
- TokenBasedRememberMeService : 만료기간이 있는 토큰쿠키를 인증.
- PersistanceTokenBasedRememberMeService : 만료기간이 영구적인 토큰쿠키를 인증.
- RemembermeService Token을 추출하고 Token이 존재하는지 확인.
- No : chain.dofiler 다른 filter를 수행.
- 존재할 경우 Decode Token을 수행(정상유무를 판단)
- Token이 서로 일치하는지 확인.
- User 계정이 존재하는지 확인.
- 새로운 Authentication 객체를 생성.
- AuthenticationManager에게 Authentication 객체를 넘겨 인증확인 하도록 함.
SecurityConfig
- .rememberMe() : 내 계정 기억 기능을 사용하겠다는 메소드
- .rememberMeParameter("remember") : 체크박스의 name 값을 표시함.
- .tokenValiditySeconds(3600) : 토큰 말료시간 단위는 초 단위임.
- .userDetailsService(userDetailsService); : Remember Me 기능을 사용할 때 사용자를 조회하는 기능을 수행.
http
.formLogin()
.and()
.rememberMe()
.rememberMeParameter("remember")
.tokenValiditySeconds(3600)
.userDetailsService(userDetailsService);
'Backend > Security' 카테고리의 다른 글
동시 세션 제어 (0) | 2023.01.03 |
---|---|
AnonymousAuthenticationFilter (0) | 2023.01.03 |
Logout 처리 및 LogoutFilter (0) | 2023.01.03 |
UsernamePasswordAuthenticationFilter (0) | 2023.01.03 |
Boot Security (0) | 2023.01.02 |