Search

JWT x ์ธ์ฆ ํ•„ํ„ฐ

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 ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.