
HttpSecurity의 폼 로그인 인증 매커니즘을 활성화 하기 위한 api.


HttpSecurity의 formLogin 메소드에서 FormLoginConfigurer 객체 생성

FormLoginConfigurer 생성자에서 UsernamePasswordAuthenticaionFilter 생성

부모 클래스(AbstractAuthenticationFilterConfigurer) 생성
FormLoginConfigurer의 authFilter 속성에 UsernameAuthenticaionFilter 할당.

AbstractAuthenticationFilterConfigurer 보면 기본 successHandler를 SaveRequestAwareAuthenticationSuccessHandler로 할당한 것을 볼 수 있음.
또한 상위 클래스(AbstractAuthenticationConfigurer)의 필드들에 값을 할당하는 과정도 거침.
이렇게 FormLoginConfigurer 생성

그럼 다시 getOrApply 메소드 살펴보자, 이게 도대체 뭔지 항상 궁금했음.

파라미터(configurer)의 클래스 타입, 여기서는 FormLoginConfigurer

getConfigurer 메소드는 HttpSecurity의 configurers 속성(LinkedHashMap)에서 FormLoginConfigurer를 찾음
아직 추가가 안되어서 null이기 때문에 null 반환

다시 돌아와서 apply 메소드 실행

파라미터 configurer(FormLoginConfigurer)의 builder 속성에 HttpSecurity를 세팅하고, HttpSecurity의 configurers 속성에 FormLoginConfigurer를 추가함
웃긴건 7버전 이후로 삭제할 메소드라고 표시되어 있음. 그 밑에 똑같은 apply 메소드가 있음. 나중에 이걸 사용하게 되는 것 같음.
SecurityConfigurer 객체들은 init, configure 메소드를 통해 필터의 초기화를 진행하고, 필터를 SecurityFilterChain에 넣는다.


FormLoginConfigurer의 init은 상위 클래스(AbsatractAuthenticationFilterConfigurer)의 init 호출

this는 FromLoginConfigurer.
loginProsessingUrl이 null 이면 '/login'으로 세팅
failureHandler도 설정 안되어 있으면, 설정.
HttpSecurity로부터 LogoutConfigurer 찾는데 기본 LogoutConfigurer면 logoutSuccessUrl에 기본값으로 세팅

FormLoginCongifurer에서 permitAll 설정했으면, 뒤 세 가지 경로는 접근 허용 세팅

HttpSecurity에 AuthenticationEntryPoint 설정

DefaultLoginPageGeneratinfFilter를 HttpSecurity로 부터 가져와서 세팅

cofigure를 실행해서 UsernameAuthenticationFilter에 필요한 세팅 마무리하고 필터를 HttpSecurity의 필터 목록에 필터 추가