FormLogin() api / FormLoginConfigurer

정민교·2024년 8월 13일
0

spring security

목록 보기
11/13
post-thumbnail

📒FormLogin()

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

📒FormLogin api와 FormLoginConfigurer 초기화 흐름

✔️FormLoginConfigurer 생성, UsernamePasswordAuthenticationFilter 생성, FormLoginConfigurer

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

FormLoginConfigurer 생성자에서 UsernamePasswordAuthenticaionFilter 생성

부모 클래스(AbstractAuthenticationFilterConfigurer) 생성

FormLoginConfigurer의 authFilter 속성에 UsernameAuthenticaionFilter 할당.

AbstractAuthenticationFilterConfigurer 보면 기본 successHandler를 SaveRequestAwareAuthenticationSuccessHandler로 할당한 것을 볼 수 있음.

또한 상위 클래스(AbstractAuthenticationConfigurer)의 필드들에 값을 할당하는 과정도 거침.

이렇게 FormLoginConfigurer 생성

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

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

getConfigurer 메소드는 HttpSecurityconfigurers 속성(LinkedHashMap)에서 FormLoginConfigurer를 찾음

아직 추가가 안되어서 null이기 때문에 null 반환

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

파라미터 configurer(FormLoginConfigurer)의 builder 속성에 HttpSecurity를 세팅하고, HttpSecurity의 configurers 속성에 FormLoginConfigurer를 추가함

웃긴건 7버전 이후로 삭제할 메소드라고 표시되어 있음. 그 밑에 똑같은 apply 메소드가 있음. 나중에 이걸 사용하게 되는 것 같음.

✔️FormLoginConfigurer의 init, build

SecurityConfigurer 객체들은 init, configure 메소드를 통해 필터의 초기화를 진행하고, 필터를 SecurityFilterChain에 넣는다.

📌init()

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

thisFromLoginConfigurer.

loginProsessingUrl이 null 이면 '/login'으로 세팅

failureHandler도 설정 안되어 있으면, 설정.

HttpSecurity로부터 LogoutConfigurer 찾는데 기본 LogoutConfigurer면 logoutSuccessUrl에 기본값으로 세팅

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

HttpSecurityAuthenticationEntryPoint 설정

DefaultLoginPageGeneratinfFilterHttpSecurity로 부터 가져와서 세팅

📌configure()

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

profile
백엔드 개발자

0개의 댓글