๐Ÿ” Reactive spring security ์ธ์ฆ ํ๋ฆ„

์œค์ฃผํ›ˆยท2025๋…„ 4์›” 9์ผ
post-thumbnail

๐Ÿถ Reactive Spring security

  • webflux ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด spring security ์Šคํƒ์„ ํ™œ์šฉํ•˜๋ ค ํ•˜๋‹ค reactive spring security๋ผ๋Š” ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด์„œ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

WebFilterChainProxy

  • mvc ํ™˜๊ฒฝ์—์„œ์˜ security๋Š” Servlet ํ•„ํ„ฐ ๋‹จ์—์„œ DelegatingFilterProxy๊ฐ€ request์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ spring container ๋‚ด๋ถ€์˜ SecurityFilterChain์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์•Œ๊ณ ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ reactive stack์—์„œ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค.

    -- https://hyuuny.tistory.com/233 ์ฐธ๊ณ 

  • reactive stack์—์„œ๋Š” HttpWebHandlerAdapter์—์„œ WebFilter๋“ค์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ํ•„ํ„ฐ๋“ค์„ ๊ฑฐ์น˜๋Š” ๋„์ค‘ WebFilterChainProxy๊ฐ€ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ Security WebFilterChain์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
    ๐Ÿ‘‰ ์ •๋ฆฌํ•ด๋ณด๋ฉด

MvcReactive
์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๋Š” ๊ณณFilterChainHttpWebHandlerAdapter
์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๋Š” ์žDelegatingFilterProxyWebFilterChainProxy
๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•Filter ๊ตฌํ˜„WebFilter ๊ตฌํ˜„

ReactiveSecurityContextHolder

  • SecurityContextHolder์™€ ๋น„์Šทํ•˜์ง€๋งŒ Mvc ์Šคํƒ์—์„œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ThreadLocal ์ „๋žต์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ๋‚ด์˜ context๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

โš ๏ธ ์™œ? ThreadLocal์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„?

  • ๋‹ต์€ reactive stack์—์„œ๋Š” ๋น„๋™๊ธฐ ๋ฐฉ์‹ ์ฆ‰ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— thread๊ฐ€ ํ•˜๋‚˜์”ฉ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ์šฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค์˜ ์ „์šฉ ๊ณต๊ฐ„์ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ˜ผ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ThreadLocal ์ „๋žต์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

  • ๋‹ค์‹œ ๋Œ์•„์™€๋ณด๋ฉด context๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ์„ ๋”ฐ๋ผ์„œ ํ๋ฅด๋Š”๋ฐ ์ฆ‰ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ์ด ์—ฐ์‚ฐ์„ ํ• ๋™์•ˆ ๊ณ„์† ์ด์–ด์ง„๋‹ค๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์ฆ์ •๋ณด๋„ ์ด ์—ฐ์‚ฐ์•ˆ์—์„œ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ธ์ฆ ๊ฐ์ฒด๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.

ReactiveSecurityContextHolder.getContext()

-- ์ž‘์„ฑ์ค‘ ...ing

โœจ GPT ๊ป˜์„œ ์•Œ๋ ค์ฃผ์‹  reactive stack์—์„œ์˜ ์ธ์ฆ ํ๋ฆ„

profile
Dont regret it will be your future

0๊ฐœ์˜ ๋Œ“๊ธ€