Spring Security

[Spring Security] SecurityContextHolder๋ž€?

์šฐ์ฃผ๋ฌผ๊ณ ๊ธฐ 2025. 5. 5. 01:08
๋ฐ˜์‘ํ˜•

๋ฆฌํ”„๋ ˆ์‰ฌ ํ† ํฐ์€ DB์—๋„ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

Entity๋ž‘ Repository๊นŒ์ง€ ๋งŒ๋“ค์–ด์ค€ ์ƒํƒœ

 

์ด์ œ ํ† ํฐ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค ์ฐจ๋ก€์ž„.

 

ํ•„ํ„ฐ๋Š” ์ „๋‹ฌ๋˜๊ธฐ ์ „ํ›„์—

URLํŒจ๋„ก์— ๋งž๋Š” ๋ชจ๋“  ์š”์ฒญ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Œ.

HTTP์š”์ฒญ์ด controller๊นŒ์ง€ ๋„๋‹ฌํ•˜๊ธฐ ์ „/ํ›„์— ์ž‘๋™.

 

์š”์ฒญ์ด ์˜ค๋ฉด, ํ—ค๋”๊ฐ’ ๋น„๊ตํ•ด์„œ ํ† ํฐ ์žˆ๋Š”์ง€ ํ™•์ธํ•จ.

์œ ํšจ์„ฑ ํ™•์ธํ•˜๊ณ 

์œ ํšจํ•œ ํ† ํฐ์ด๋ฉด Security Context Holder(ํด๋ž˜์Šค)์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•จ.

 

 

** SecurityContextHolder๋Š” ์•ž์—์„œ๋„ ์ž ๊น ์–ธ๊ธ‰ํ•œ ์  ์žˆ๋Š”๋ฐ,

์ธ์ฆ ๊ฐ์ฒด(Authentication)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ž„.

(๊ทธ๋ž˜์„œ getAuthentication()๋ฉ”์„œ๋“œ๊ฐ€ ์ฃผ๋กœ ํ˜ธ์ถœ๋˜๋Š”๊ณณ์ด ํ•„ํ„ฐ๋ผ๊ณ  ๋“ค์Œ)

๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ์ธ์ฆ ๊ฐ์ฒด ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

 

์ด ํด๋ž˜์Šค๋Š” ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๊ณต๊ฐ„์„ ํ• ๋‹น(thred local)ํ•จ -> ์•„๋ฌด๊ณณ์—์„œ๋‚˜ ์ฐธ์กฐ ๊ฐ€๋Šฅ

์ด๋Ÿฌํ•œ SecurityContext ๊ฐ์ฒด๋“ค์„ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ SecurityContextHolder์ž„.

 

SecurityContextHolder๋Š” ์Šค๋ ˆ๋“œ ๋กœ์ปฌ ์ €์žฅ์†Œ์ž„.

์ฆ‰ ํ˜„์žฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์—

Authentication๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•จ.

 

 

 

์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๊ฐ€์„œ ์ง€ํ”ผํ‹ฐํ•œํ…Œ ํ๋ฆ„ ๋ฌผ์–ด๋ณด๋‹ˆ๊นŒ

์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ž˜ ์„ค๋ช…ํ•ด์คฌ์Œ.

 

 

โœ… ํ•œ๋งˆ๋”” ์ •๋ฆฌ

SecurityContextHolder ํด๋ž˜์Šค๋Š” SecurityContext ๊ฐ์ฒด๋ฅผ ์Šค๋ ˆ๋“œ๋ณ„๋กœ ๋ณด๊ด€ํ•˜๊ณ , ๊ทธ ์•ˆ์—๋Š” Authentication ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค. ์ด๊ฑธ ๊บผ๋‚ด์„œ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ ์˜๋ฌธ์ ์ด ๊ถ๊ธˆํ•œ๊ฒŒ ์ƒ๊ฒผ์Œ


์™œ DB์—์„œ ์•ˆ ๊บผ๋‚ด๊ณ  SecurityContextHolder์—์„œ ๊บผ๋‚ด๋‚˜?

์ธ์ฆ๋œ ๋‹ค์Œ์ด๋ฉด DB์—์„œ ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ ๋‚ซ์ง€ ์•Š๋‚˜?

 

๋งค ์š”์ฒญ๋งˆ๋‹ค DB์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋Š”๊ฒŒ ๋น„ํšจ์œจ์ ์ด๊ธฐ๋•Œ๋ฌธ.

๋”ฐ๋ผ์„œ DB์—์„œ ์‚ฌ์šฉ์ž ์กฐํšŒ ํ•œ๋‹ค์Œ์—, Authentication๊ฐ์ฒด ๋งŒ๋“ค๊ณ 

๊ทธ ๊ฐ์ฒด๋ฅผ SecurityContextHolder์— ์ €์žฅํ•ด๋‘๊ณ 

-> ์ดํ›„ ์š”์ฒญ๋“ค์€ (ํ•„ํ„ฐ์—์„œ ํ† ํฐ ์œ ํšจํ•˜๋ฉด) Securitycontext์—์„œ ์ธ์ฆ ์ •๋ณด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ

ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ž„.

 


 

๋‹ค์‹œ ์ด์–ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด,

 

SecurityContext๋Š” ์ธ์ฆ๊ฐ์ฒด(Authentication)๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ณด๊ด€์†Œ.

์—ฌ๊ธฐ์„œ ์ธ์ฆ๊ฐ์ฒด ๊บผ๋‚ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š”๊ฑฐ์ž„.

์ด ํด๋ž˜์Šค๋Š” ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๊ณต๊ฐ„ ํ• ๋‹น(์Šค๋ ˆ๋“œ ๋กœ์ปฌ)

-> ์•„๋ฌด๊ณณ์—์„œ๋‚˜ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•˜๊ณ , ๋…๋ฆญ์ ‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

---> ์ด๋Ÿฌํ•œ SecurityContext๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด๊ฐ€

SecurityContextHolder์ž„.

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ TokenAuthenticationFilter.java ์ฝ”๋“œ ๊ตฌํ˜„ํ•œ๊ฑฐ ์˜ฌ๋ ค๋ณด๊ฒ ์Œ.

๋ฐ˜์‘ํ˜•