JWT x ์ธ์ฆ ํํฐ
JwtAuthenticationFilter
UsernamePasswordAuthenticationFilter ํํฐ๋ฅผ ์์ํ ์ปค์คํ
์ธ์ฆ ํํฐ
UsernamePasswordAuthenticationFilter
Spring Security์์ ์ ๊ณตํ๋ ํผ ๋ก๊ทธ์ธ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ธฐ ์ํ ํํฐ
์ธ์ฆ ์ฒ๋ฆฌ ํ๋ก์ธ์ค
์ง์ ํ ๋ก๊ทธ์ธ ๊ฒฝ๋ก (/login) ์ ์์ฒญ ์, ํํฐ๋ฅผ ์ ์ฉํฉ๋๋ค.
์ธ์ฆ ์๋
1.
์์ฒญ ๋ฉ์์ง์์ ์์ด๋, ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ์ถํฉ๋๋ค.
2.
์์ด๋, ๋น๋ฐ๋ฒํธ๋ก UsernamePasswordAuthenticationToken ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
3.
AuthenticationManager ๋ฅผ ํตํด์ UsernamePasswordAuthenticationToken ๋ก ์ธ์ฆ ์๋ํฉ๋๋ค.
4.
์คํ๋ง ์ํ๋ฆฌํฐ์์ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
a.
UserDetailsService ์์, ์ฌ์ฉ์ ์ ๋ณด์ธ UserDetails ๊ฐ์ฒด๋ฅผ ์กฐํํฉ๋๋ค.
b.
UserDetails ๊ฐ์ฒด์ ์ ์ฅ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๊ธฐ ์ํด์ PasswordEncoder ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
c.
์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ๋ ์ ์ฅ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋ ํ์ธํฉ๋๋ค.
d.
์ธ์ฆ์ ์ฑ๊ณตํ๋ฉด, Authentication ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฐํํฉ๋๋ค.
e.
Authentication ์ isAuthenticated() ๋ฉ์๋๋ก ์ธ์ฆ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ธ์ฆ ์ฑ๊ณต ์, JWT ํ ํฐ ๋ฐํ
1.
Authentication ์ Principal ๊ฐ์ฒด ์์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
2.
Principal ๊ฐ์ฒด์ ์์ด๋, ๊ถํ ๋ชฉ๋ก์ ์ถ์ถํฉ๋๋ค
3.
JWT ํ ํฐ์ ์์ฑํฉ๋๋ค.
4.
Authorizaion ์๋ตํค๋์ โBearer โ + {JWT} ํํ๋ก JWT ๋ฅผ ์ง์ ํฉ๋๋ค.
5.
JWT ๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ตํฉ๋๋ค.