1. Username/Password Authentication
- 사용자를 인증하는 가장 일반적인 방법 중 하나는 사용자 이름과 비밀번호를 확인하는 것이다.
- Spring Security는 사용자 이름과 비밀번호를 사용하여 인증하는 포괄적인 지원을 제공한다.
1-1. Reading the Username & Password (사용자 이름 및 암호 읽기)
- Spring Security는 HttpServletRequest에서 사용자 이름과 암호를 읽을 수 있는 다음과 같은 기본 제공 메커니즘을 제공한다.
1-1-1. Form Login
- Spring Security는 HTML 양식을 통해 제공되는 사용자 이름 및 비밀번호를 지원한다.
- 여기서는 Spring Security 내에서 form 기반 인증이 어떻게 작동하는지 자세히 설명한다.
<aside>
4️⃣ 먼저 사용자가 로그인 form으로 리디렉션되는 방법을 알아보자
</aside>

- 먼저 사용자는 권한이 없는 리소스(/프라이빗)에 인증되지 않은 요청을 한다.
- Spring Security의 **
AuthorizationFilter
**는 **AccessDeniedException
**을 던져 인증되지 않은 요청이 거부되었음을 나타낸다.
- 사용자가 인증되지 않았기 때문에 **
ExceptionTranslationFilter
**는 **Start Authentication
**을 시작하고 구성된 AuthenticationEntryPoint를 사용하여 로그인 페이지로 리디렉션을 보낸다. 대부분의 경우 AuthenticationEntryPoint는 **LoginUrlAuthenticationEntryPoint
**의 인스턴스이다.
- 브라우저가 리디렉션된 로그인 페이지를 요청한다.
- 응용프로그램 내의 무언가, 로그인 페이지를 렌더링해야 한다.
<aside>
4️⃣ 이번엔 SecurityFilterChain을 사용한 방법을 알아보자
</aside>
- 사용자 이름과 암호가 제출되면 **
UsernamePasswordAuthenticationFilter
**가 사용자 이름과 암호를 인증한다.