Filter Chain

์š”์ฒญ์„ Servlet์œผ๋กœ ๋ณด๋‚ด๊ธฐ์ „์— ์ค‘๊ฐ„์— ์œ„์น˜ํ•œ Servlet Filter๋Š” ์„œ๋ธ”๋ฆฟ ์ŠคํŽ™์— ์ •์˜๋œ ๊ธฐ์ˆ ๋กœ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๊ณ  ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ”„๋ง์—์„œ ๋งŒ๋“  Bean์ด๋‚˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ๊ฐ€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ, Spring Security๋Š” Filter ๊ธฐ๋ฐ˜์œผ๋กœ Servlet์œผ๋กœ ์š”์ฒญ์ „์— Filter์—์„œ ๋ณด์•ˆ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ”„๋ง ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•ด์•ผํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋‹ค.

DelegatingFilterProxy

Servlet Container ์˜์—ญ

DelegatingFilterProxy๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ธ”๋ฆฟ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ServletFilter์ด๊ณ  ์ด๊ฒƒ์ด ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” Filter(Spring Bean)์—๊ฒŒ ์š”์ฒญ์„ ์œ„์ž„ํ•˜๊ณ  ์ด Bean์ด ๊ตฌํ˜„ํ•œ Servlet Filter์—์„œ Security๋ณด์•ˆ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•œ๋งˆ๋””๋กœ DelegatingFilterProxy๋Š” ApplicationContext์—์„œ springSecurityFilterChain์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ ๋œ ๋นˆ์„ ์ฐพ์•„ ์ด ๋นˆ์—๊ฒŒ ์š”์ฒญ์„ ์œ„์ž„ํ•˜๋Š” proxy์—ญํ• ์„ ํ•œ๋‹ค.

FilterChainProxy

์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํด๋ž˜์Šค๋กœ ServletFilter๋ฅผ ๊ตฌํ˜„ํ•œ ํ•„ํ„ฐ ํด๋ž˜์Šค(Spring Container์˜ ์˜์—ญ)

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ดˆ๊ธฐํ™” ์‹œ ์ƒ์„ฑ๋˜๋Š” ํ•„ํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ œ์–ดํ•˜๋ฉฐ ์š”์ฒญ์„ ์œ„์ž„๋ฐ›์•„ ์‹ค์ œ๋กœ ๋ณด์•ˆ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค๋กœ ์ด๋„ SecurityFilterChain์—๊ฒŒ ์œ„์ž„ํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ํ•„ํ„ฐ Chain์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœํ•ด์„œ ์ „๋‹ฌํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ํ•„ํ„ฐ๊นŒ์ง€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„๋•Œ ๋ณด์•ˆ์ด ํ†ต๊ณผ๋˜๊ณ  DispathcerServlet์—๊ฒŒ ์š”์ฒญ์„ ์ „๋‹ฌํ•œ๋‹ค.

Last updated