์ค์ค๋ก๋ฅผ ์ฆ๋ช ํ๋ค
๋ผ๋ ๋ป์ผ๋ก ํํ ๋งํ๋ ๋ก๊ทธ์ธ ๊ฐ๋ ์ด๋ค.
์ธ์ฆ์ ์ํด์ ์ฌ์ฉ์๋ ์์ ์ด ์๊ณ ์๋ ์์ ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ฐ ์์ด๋์ ํจ์ค์๋๊ฐ ์ด์ ์ํ๋ค.
ํ๊ฐ๋ ๊ถํ
์ด๋ผ๋ ๊ฐ๋ ๊ณผ ๊ฐ๋ค. ์ธ์ฆ์ด ๋ ์ฌ์ฉ์๋ผ๊ณ ํด๋ ์ด์ ์ ๊ทผ ํ ์ ์๋ ๊ถํ์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
๋ณดํธ๋ฐ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋์
์ธ์ฆ๋ ์ฃผ์ฒด๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋์์ ์ํํ ์ ์๋๋ก ํ๋ฝ๋์ด ์๋์ง ๊ฒฐ์
- ์ธ์ฆ ๊ณผ์ ์ ํตํด ์ฃผ์ฒด๊ฐ ์ฆ๋ช ๋ ํ ๊ถํ ๋ถ์ฌ ๊ฐ๋ฅ
- ๊ถํ ๋ถ์ฌ์ ๋ ๊ฐ์ง ์์ญ์ด ์กด์ฌํ๋๋ฐ
์น ์์ฒญ ๊ถํ
๊ณผ๋ฉ์๋ ํธ์ถ ๋ฐ ๋๋ฉ์ธ ์ธ์คํด์ค์ ๋ํ ์ ๊ทผ๊ถํ ๋ถ์ฌ
์ด 2๊ฐ์ง๊ฐ ์๋ค.
AuthenticationProvider ์ธํฐํ์ด์ค์์ DB์ ์๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด, UserDetailsService ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
UserDetailsService ์ธํฐํ์ด์ค๋ ํ๋ฉด์์ ์ ๋ ฅํ ์ฌ์ฉ์์ username์ผ๋ก loadUserByUsername() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ DB์ ์๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ UserDetails ํ์ผ๋ก ๊ฐ์ ธ์จ๋ค. ๋ง์ฝ ์ฌ์ฉ์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์์ธ๋ฅผ ๋์ง๋ค. ์ด๋ ๊ฒ DB์์ ๊ฐ์ ธ์จ ์ด์ฉ์์ ์ ๋ณด์ ํ๋ฉด์์ ์ ๋ ฅํ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๋น๊ตํ๊ฒ ๋๊ณ , ์ผ์นํ๋ฉด Authentication ์ฐธ์กฐ๋ฅผ ๋ฆฌํดํ๊ณ , ์ผ์น ํ์ง ์์ผ๋ฉด ์์ธ๋ฅผ ๋์ง๋ค.
์ธ์ฆ์ด ์๋ฃ๋๋ฉด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ง Authentication ๊ฐ์ฒด๋ฅผ SecurityContextHolder์ ๋ด์ ์ดํ AuthenticationSuccessHandle๋ฅผ ์คํํ๋ค.(์คํจ์ AuthenticationFailureHandler๋ฅผ ์คํํ๋ค.)
์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋
form
๊ธฐ๋ฐ ์ธ์ฆ
์ค์ ๋ ๋ก๊ทธ์ธ URL๋ก ์ค๋ ์์ฒญ์ ๊ฐ์ํ๋ฉฐ, ์ ์ ์ธ์ฆ ์ฒ๋ฆฌ์ธAuthenticationManager๋ฅผ
ํตํ ์ธ์ฆ ์คํ
์ธ์ฆ์ด ์ฑ๊ณตํ๋ค๋ฉด ์ธ์ฆ์ฉ ๊ฐ์ฒด๋ฅผSecurityContext
์ ์ ์ฅ ํAuthenticationSuccessHandler
์คํ, ์คํจ์์๋AuthenticationFailureHandler
์คํ
ํ๋ฉด์์ ์ ๋ ฅํ ๋ก๊ทธ์ธ ์ ๋ณด์ DB์ ๋ณด๋ฅผ ๋น๊ต
Spring Security์AuthenticationProvider
์ ๊ตฌํํ ํด๋์ค๋กsecurity-context
์provider
๋ก ๋ฑ๋ก ํ ์ธ์ฆ์ ์ฐจ๋ฅผ ๊ตฌํํ๋ค.
login view์์ login-processing-url๋ก์ form action ์งํ ์ ํด๋น ํด๋์ค์ supports() > authenticate() ์์ผ๋ก ์ธ์ฆ ์ ์ฐจ ์งํ
UserDetailsService ์ธํฐํ์ด์ค๋ DB์์ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ
์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ด๋ ์ธํฐํ์ด์ค, ์ง์ ์์๋ฐ์ ์ฌ์ฉํ๋ค.
https://velog.io/@kyungwoon/Spring-Security-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC