[Spring Security] formLogin
๐ formLogin ๋ฉ์๋๋?
formLogin
๋ฉ์๋๋ ๋ก๊ทธ์ธ ํผ์ ํตํ ์ธ์ฆ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ด๋ค.
๐ formLogin API
loginPage
loginPage
๋ Spring Security๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ก๊ทธ์ธ ํผ ๋์ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ปค์คํ
๋ก๊ทธ์ธ ํผ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ์ฌ์ฉํ๋ค.
loginProcessingUrl
loginProcessingUrl
๋ฉ์๋์๋ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฐ๋ก์ฑ์ ์ํํ ์๋ํฌ์ธํธ๋ฅผ ์์ฑํ๋ค. ํด๋น URL๋ก ์๊ฒฉ ์ฆ๋ช
์ด ๋ค์ด์ค๋ฉด UsernamePasswordAuthenticationFilter
๊ฐ ์ด๋ฅผ ๊ฐ๋ก์ฑ์ AuthenticationManager
์๊ฒ ์ ๋ฌํ๋ค. ์ดํ UserDetailService
๊ตฌํ์ฒด๋ฅผ ์ฐพ์ loadUserByUsername
๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ๋ฆฌํด๋ UserDetails
๊ฐ์ฒด์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋น๊ตํ์ฌ ์ผ์นํ๋์ง ๊ฒ์ฆํ๋ค. ์ธ์ฆ์ ์ฑ๊ณตํ๋ฉด ์ฌ์ฉ์ ์ ๋ณด์ ๊ถํ์ ๋ด์ Authentication
๊ฐ์ฒด๋ฅผ ์์ฑํ ํ SecurityContext
์ ์ ์ฅํ๋ค.
defaultSuccessUrl
defaultSuccessUrl
์ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ ๋ ์ด๋ํ ๊ธฐ๋ณธ URL์ ์ง์ ํ๋ ๋ฉ์๋์ด๋ค. ๋ค๋ง ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ์ ๋ ํญ์ defaultSuccessUrl
์ ๋ช
์๋ URL๋ก ์ด๋ํ๋ ๊ฒ์ด ์๋๋ค.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์๋ํ ๋, ์๋ ๊ฐ๋ ค๊ณ ํ URL์ ์ธ์
์ RequestCache
์ SavedRequest
๊ฐ์ฒด๋ก ์ ์ฅํ๋๋ฐ, ๋ง์ฝ SavedRequest
๊ฐ ์๋ค๋ฉด defaultSuccessUrl
์ ๋ช
์๋ URL๋ก ์ด๋ํ๋ ๊ฒ์ด๋ค.
๋ง์ฝ SavedRequest
์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์๊ณ ๋ฌด์กฐ๊ฑด defaultSuccessUrl
์ URL๋ก ๋ฆฌ๋๋ ์
ํ๊ณ ์ถ๋ค๋ฉด ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ธ alwaysUse
์ ๊ฐ์ true
๋ก ์ค์ ํ๋ฉด ๋๋ค.
๋ค๋ง defaultSuccessUrl
์ค์ ์ ํ์ ํ successHandler
๊ฐ ์ค์ ๋์๋ค๋ฉด ์์ ํ ๋ฌด์๋๋ค.
failureUrl
failureUrl
์ ๋ก๊ทธ์ธ ์๋๊ฐ ์คํจํ์ ๋ ์ด๋ URL๋ก ๋ฆฌ๋๋ ์
ํ ์ง ์ง์ ํ๋ ๋ฉ์๋์ด๋ค.
failureUrl
๋ํ failureHandler
๊ฐ ์ค์ ๋์๋ค๋ฉด ์์ ํ ๋ฌด์๋๋ค.
usernameParameter
usernameParameter
๋ฉ์๋๋ ์ฌ์ฉ์ ์์ด๋๋ฅผ ์ด๋ค HTTP ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ง ์๋ ค์ค๋ค. ์ด ์ค์ ์ ๋ฐ๋ผ ์ถ์ถ๋ ๊ฐ์ด loadUserByUsername
๋ฉ์๋์ username
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋๋ค.
passwordParameter
passwordParameter
๋ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด๋ค ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ง ์๋ ค์ฃผ๋ ๋ฉ์๋์ด๋ค. ์ถ์ถ๋ ๊ฐ์ UserDetails
์ ์ ์ฅ๋ ๋น๋ฐ๋ฒํธ ํด์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ์ธ์ฆํ๋ค.
failureHandler
failureUrl
๋ฉ์๋๊ฐ ๋จ์ํ URL์ ๋ฆฌ๋๋ ์
ํ๋ ๊ฒ์ ๋นํด failureHandler
๋ ๋ ๋ค์ํ ๋์์ ์ํํ ์ ์๋ค. AuthenticationFailureHandler
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ฑฐ๋ SimpleUrlAuthenticationFailureHandler
๋ฅผ ์์ํ์ฌ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ธ์๋ก ๋๊ฒจ์ค๋ค.
1
2
3
4
5
6
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
// ...
}
๋ณดํต onAuthenticationFailure
๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ์ฌ์ฉํ๋๋ฐ, HttpServletRequest
์์ ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ณ , HttpServletResponse
์์ ๋ฆฌ๋๋ ์
๊ฐ์ ์๋ต์ ์ ์ดํ ์ ์๋ค. exception
์ ํตํด ์์ธ ํ์
์ ํ์ธํ์ฌ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
successHandler
successHandler
๋ํ defaultSuccessUrl
๋ณด๋ค ์ ๊ตํ ์์
์ ์ํํ๋ค. AuthenticationSuccessHandler
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ฑฐ๋ SimpleAuthenticationSuccessHandler
๋ฅผ ์์๋ฐ์ ํด๋์ค๋ฅผ ๊ตฌํํ๋ค.