예외처리에 관해 이해가 어려운 부분이 있습니다.
421
投稿した質問数 27
안녕하세요 강의 잘 보고 있습니다. 다름이 아니라 예외를 처리하는 부분에서 이해가 잘 가지 않는 부분이 이렇게 질문을 드립니다.
스프링 시큐리티의 FilterChainProxy의 끝단에 예외를 처리하는 ExceptionTranslationFilter가 존재합니다. 해당 필터가 인가 예외를 처리하는 것까지는 이해하였습니다.
그러나 인증예외를 다루는 것이 조금 이해가 가지 않습니다.
스프링 시큐리티에서 제공하는 formLogin 인증을 포함한 모든 인증 방식은 ExceptionTranslationFilter앞에 존재합니다.
그럼에도 불구하고 인증 필터들에서 발생하는 예외들을 ExceptionTranslationFilter에서 처리를 합니다. 기존의 저는 예외가 발생할 즉시 바로 자신을 호출한 객체에게 예외를 반환하며 프로세스가 진행한다 알고 있는데 이는 스프링 시큐리티에서 인증예외를 처리하는 흐름과는 정 반대의 흐름입니다.
혹시 인증 필터에서 해당 예외가 발생할시 예외를 Throw하는 것이 아닌 다른방식으로 예외를 감싸서 ExceptionTranslationFilter까지 흘러가는 건가요? 아니면 제가 놓치는 부분이 있는걸까요?
回答 2
1
네 이부분은 ExceptionTranslationFilter 챕터에서 설명하고 있습니다.
ExceptionTranslationFilter 는 AuthorizationFilter 에서 발생한 예외를 처리하고 있습니다.
즉 ExceptionTranslationFilter 이전 필터들에서 발생하는 예외를 처리하지 않습니다.
ExceptionTranslationFilter 이전 필터들에서 발생하는 예외는 해당 필터에서 예외를 처리하거나 그 이전필터에게 예외를 전가하는 식으로 이루어집니다
그래서 formLogin 에서 발생하는 예외는 UsernamePasswordAuthenticationFilter 에서 처리합니다.
강의에서도 설명하고 있으니 참고 해 주시기 바랍니다.
0
제 생각에는 AuthorizationFilter에서 AccessDeniedException 예외를 던지지만, 또한 AuthenticationCredentialsNotFoundException 예외도 던지는 로직이 있습니다(AuthenticationCredentialsNotFoundException 예외는 AuthenticationException 하위 예외입니다). 해당 예외를 ExceptionTranslationFilter가 처리하므로 인증 예외를 처리한다고 설명하신게 아닐까 싶습니다.
AuthenticationCredentialsNotFoundException 예외는 AuthorizationFilter의 getAuthentication() 메서드에, 해당 예외를 ExceptionTranslationFilter가 처리하는 부분은 doFilter() 메서드 내부에서 (AuthenticationException) 형변환을 하는 부분을 살펴보시면 쉽게 이해하실 듯 합니다.
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
27
2
단원별 소스코드
0
59
2
CustomAuthenticationProvider 추가 관련 문의
0
69
2
AOP 의존성 명칭 변경
0
63
1
빈 1개 등록 시 다른 해결 방법
0
65
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
85
2
OIDC의 id token에 담긴 데이터에 대해
0
74
1
loginPage("/loginPage") 질문드립니다.
0
68
1
@EnableWebSecurity
0
147
1
트랜잭션과 롤백
0
99
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
87
2
AuthenticationManager 사용 방법
0
148
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
102
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
190
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
105
2
메타 주석 질문
0
68
1
동시세션제어 기능에서 로그아웃하기
0
144
3
로그인 후, redirect 에서 error
0
138
3
Session 생성 타이밍에 대한 질문
0
84
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
132
2
customAuthentication 관련
0
126
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
110
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
101
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
158
2

