UsernamePasswordAuthenticationFilter는 무엇일까?
인증을 처리하기 위한 필터중 하나로, 사용자의 이름과 비밀번호 입력을 받아 인증 처리를 수행하는 역할을 한다.
*Username / password / authentication / filter 이렇게 나뉘어서 생각하면 되고 각각의 기능을 합쳐서 생각한다고하면 편할것 같다.
AbstractAuthenticationProcessingFilter 로 부터 상속받아 구현되어 있고, 사용자가 입력한 인증 정보를 추출하여 AuthenticationManager 를 이용하여 인증을 시도합니다. 인증이 성공하면, 인증 정보를 Authentication 객체에 저장하고, 인증된 사용자 정보를 SecurityContextHolder에 저장합니다.
기본적으로 /login 요청을 처리하고, 사용자가 입력한 사용자 이름과 비밀번호는 HTTP POST 요청의 요청 본문에 포함되어야 합니다. 이 필터는 인증 요청이 /login으로 들어왔을 때 실행되며, 사용자 이름과 비밀번호는 요청 본문에서 추출하여 인증처리를 수행합니다.
필터의 동작 방식
1. 사용자가 로그인 페이지에 접근한다.
2. 사용자는 사용자 이름과 비밀번호를 입력하고, 로그인 버튼을 클릭합니다.
3. 클라이언트는 /login 요청을 서버에 전송합니다.
4. UsernamePasswordAuthenticationFilter 은 /login 요청을 가로채어 사용자 이름과 비밀번호를 추출합니다.
5. 추출된 사용자 이름과 비밀번호를 이용하여 Authentication 객체를 생성합니다.
6. 생성된 Authentication 객체를 AuthenticationManager를 이용하여 인증처리를 요청합니다.
7. 인증이 성공하면, Authentication 객체에 인증된 사용자 정보를 저장하고, SecurityContextHolder에 저장합니다.
8. 인증된 사용자 정보를 기반으로 요청에 대한 처리를 수행합니다.
UsernamePasswordAuthenticationFilter은 사용자 이름과 비밀번호를 이용한 기본적인 인증 처리를 수행할때 많이 사용된다.
'(TIL) and (WIL)' 카테고리의 다른 글
기본형/참조형 매개변수 (0) | 2023.02.17 |
---|---|
JAVA 매서드 선언부/구현부 (0) | 2023.02.16 |
정수 제곱근 판별 - programmers (0) | 2023.02.11 |
쿠키(Cookie)와 세션(Session) 특징과 차이 (0) | 2023.02.10 |
절차적 프로그래밍 vs 관계형 프로그래밍 (0) | 2023.02.09 |