정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!
폼 인증
- HTTP 기반의 폼 로그인 인증 메커니즘을 활성화하는 API
- 사용자 인증을 위한 사용자 정의 로그인 페이지를 쉽게 구현할 수 있음
- 기본적으로 스프링 시큐리티가 기본 로그인 페이지 제공 : 사용자 이름 / 비밀번호 필드 포함된 간단한 로그인 양식
- 사용자는 웹 폼을 통해 자격 증명(사용자 이름/비밀번호)을 제공하고, Spring Security는 HttpServletRequest에서 이 값을 읽어 옴
폼 인증 흐름
Client
↓ Get /user
↓
SecurityFilterChain
-----
권한 검사 필터 : AuthorizationFilter
↓
접근 예외 발생 : AccessDeniedException
↓
예외 처리 필터 : ExceptionTranslationFilter
↓
인증 시작 : AuthenticationEntryPoint
↓
로그인 페이지로 리다이렉트
-----
↓
로그인 페이지
↓
인증 시도 : 사용자 자격증명(username + password) submit
↓
Server
formLogin() API
- FormLoginConfigurer 설정 클래스를 통해 여러 API 들을 설정
- 내부적으로 UsernamePasswordAuthenticationFilter 생성 → 폼 방식의 인증 처리를 담당하게 됨

- loginPage("/loginPage") : 사용자 정의 로그인페이지로 전환
- 설정되면 기본 로그인페이지는 무시됨
- 설정하지 않으면 기본 로그인 페이지는 "/login"
- loginProcessingUrl("/loginProc") : 사용자 이름과 비밀번호를 검증할 URL 지정
- HTML 태그 <form action="/loginProc"></form>에서 action 속성값과 동기화되어야 함
- 설정하지 않으면 기본값은 "/login"
- 기본 로그인 페이지를 사용하면 내가 지정한 값으로 자동으로 동기화됨
- 사용자 정의 로그인 페이지를 사용하면 form action 값과 loginProcessingUrl 값이 일치하도록 설정해야 함
- defaultSuccessUrl("/", [alwaysUse]) : 로그인 성공 이후 이동 페이지, alwaysUse가 true이면 무조건 지정된 위치로 이동
- alwaysUse 기본값은 false
- false인 경우) 인증 전에 보안이 필요한 페이지를 방문하다가 인증에 성공한 경우 이전 위치로 리다이렉트
- true인 경우) 이전 위치와 관계 없이 defaultUrl로 리다이렉트
- failureUrl("/failed") : 인증에 실패할 경우 사용자에게 보내질 URL 지정
- 기본값은 "/login?error"

- usernameParameter("username") : 인증을 수행할 때 사용자 이름(아이디)을 찾기 위해 확인하는 HTTP 매개변수 설정
- 기본값은 username
- input 태그 <input name="username">에서 name 속성값과 동기화되어야 함
- passwordParameter("password") : 인증을 수행할 때 비밀번호를 찾기 위해 확인하는 HTTP 매개변수 설정
- 기본값은 password
- input 태그 <input name="password">에서 name 속성값과 동기화되어야 함
- successHandler(AuthenticationSuccessHandler) : 인증 성공 시 사용할 AuthenticationSuccessHandler 지정
- 기본값은 SavedRequestAwareAuthenticationSuccessHandler
- 사용자 정의로 인증 성공 시 할 일을 지정할 수 있음
- 람다식으로 (request, response, authentication) -> { response.sendRedirect("/home")} 지정 가능
- 이 handler가 지정되면 defaultSuccessUrl은 alwayUser가 true여도 무시됨 ≫ successHandler가 더 셈 !!
- failureHandler(AuthenticationFailureHandler) : 인증 실패 시 사용할 AuthenticationFailureHandler 지정
- 기본값은 SimpleUrlAuthenticationFailureHandler
- 사용자 정의로 인증 실패 시 할 일을 지정할 수 있음
- 람다식으로 (request, response, exception) -> { response.sendRedirect("/login")} 지정 가능
- 이 handler에서 리다이렉트 페이지 주소가 지정되면 failureUrl은 무시됨 ≫ failureHandler 가 더 셈 !!
- permitAll() : failureUrl(), loginPage(), loginProcessingUrl()에 대한 URL에 모든 사용자의 접근을 허용
- 로그인 성공 이전, 사용자 인증 이전에 접근해야 하는 URL이기 때문
'spring security' 카테고리의 다른 글
| 기본 인증 - httpBasic() (0) | 2025.01.27 |
|---|---|
| 폼 인증 필터 - UsernamePasswordAuthenticationFilter (0) | 2025.01.19 |
| 사용자 정의 보안 설정하기 (0) | 2025.01.17 |
| DelegatingFilterProxy / FilterChainProxy (0) | 2025.01.13 |
| WebSecurity / HttpSecurity (0) | 2025.01.13 |