인프런 커뮤니티 질문&답변

정민교님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

Rest 인증 필터 구현 - RestAuthenticationFilter

restSecurityFilterChian에서 addFilterBefore와 authenticationManger 질문

24.08.11 15:55 작성

·

75

·

수정됨

0

httpSecurity.formLogin()을 설정해주지 않으면, securityFilterChain에 UsernamePasswordAuthenticationFilter가 없지 않나요?

 

restAuthenticationFilter를 UsernamePasswordAuthenticationFilter 앞에 추가할 수 있나요?

 

restAuthenticationFilter에서 authenticationManager를 사용할 수 있도록 설정해주었는데, httpSecurity에 또 세팅해줘야 하는 이유가 있는걸까요?

답변 1

0

정수원님의 프로필 이미지
정수원
지식공유자

2024. 08. 12. 20:09

필터의 순서를 정할 때는 스프링 시큐리티가 내부적으로 관리하는 모든 필터에 대한 순서를 이미 정해 놓고 저장하고 있습니다.

UsernamePasswordAuthenticationFilter 의 순서가 정해져 있습니다.

그렇기 때문에 httpSecurity.formLogin() 설정과는 별개로 진행이 됩니다.

image.png


내부 소스를 보시면 위와 같이 실행이 되는데 registeredFilter 가 UsernamePasswordAuthenticationFilter 이고 이 필터는 filterOrders 에 순서가 이미 저장되어 있습니다.

 

그리고 authenticationManager 를 httpSecurity에 저장해 주어야 하는 이유는 authenticationManager 를 얻어오는 방법이 httpSecurity 로부터 직접 수동으로 생성해서 얻어오기 때문에 httpSecurity 에 저장해 주어야 하는 과정이 필요하다고 이해하시면 됩니다.

그렇지 않으면 httpSecurity 가 또 authenticationManager 을 얻어오기 위한 생성을 중복으로 하기 때문에 오류가 발생합니다.

이 부분은 강의에서 설명하고 있는 내용으로만 이해하셔도 됩니다. 그렇게 깊이까지는 아실 필요는 없습니다.

정민교님의 프로필 이미지
정민교
질문자

2024. 08. 12. 22:13

  1. UsernamePasswordAuthenticationFilter

각 필터마다 필터 순서가 정해져 있고, UsernamePasswordAuthenticationFilter가 SecurityFilterChain에 포함되어 있는 지 여부에 상관 없이,

restAuthenticationFilter를 SecurityFilterChain에 포함한다면 UsernamePasswordAuthenticaionFilter의 앞 순서로 지정하는 거 뿐이다. 이렇게 이해하면 될까요?

 

  1. AuthenticationManager

HttpSecurity에 AuthenticationManager 설정을 해주지 않으면 AuthenticaionManager 생성을 중복으로 하기 때문에 이미 생성한 AuthenticationManager를 설정해줘야 한다는 말씀 맞을까요?

정수원님의 프로필 이미지
정수원
지식공유자

2024. 08. 12. 22:19

네 잘 이해하셨습니다^^

정민교님의 프로필 이미지
정민교
질문자

2024. 08. 12. 22:26

답변 감사드립니다!