-
[Spring security5] 인증/인가에 대한 간략한 흐름개발/Spring 2023. 12. 16. 18:52
인증을 하지 않은 채로(로그인을 하지 않은 채로) 특정 자원에 접근하려고 한다면, 스프링 내부에선 어떤 흐름이 전객되는지 살펴보자. 루트 페이지로 접근했을 때의 과정이다.
1. 인가 실패이지만 익명 사용자는 조금 다른 로직을 거치게 된다
2. sendStartAuthentication() 실행
여기서 중요한 점은 reqeustCache 객체에 request를 저장한다는 점이다. 이는 인증과 인가에 성공했을 때 원래 접근하려던 url로 이동하게 하기 위함이다. saveRequest 함수 안에서 DefaultSavedRequest 객체를 만들어 해당 세션에 저장하게 되는데, savedRequest 객체 안에 요청 url이 저장되어 있다. 이는 로그인 성공 이후에 successHandler에서 이용한다.
그리고 이렇게 successHandler에서 접근할 수 있는 이유는 스프링의 여러 필터가 차례대로 실행될 때 이 특수한 request 객체를 다음 필터로 넘기기 때문이다.
RequestCacheAwareFilter 3. 로그인 성공 후
로그인 성공 후 saveRequest에서 기존에 접근하려고 했던 url을 가져와 redirect 한다.
이런 일련의 과정 속에서 savedRequest는 삭제된다.
'개발 > Spring' 카테고리의 다른 글
[Spring Security5] Config에서 defaultSuccessUrl(), successHandler()의 순서 문제 (0) 2023.12.22 [Spring Security5] SecurityContext에 가졌던 작은 오해 (0) 2023.12.18 내부 트랜잭션의 롤백과 외부 트랜잭션의 커밋 (0) 2023.07.06 트랜잭션 AOP (0) 2023.07.06 @PostConstruct 와 @Transactional (0) 2023.07.05