๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/Java

[TIL] Spring Security

by hong- 2022. 7. 29.

๐Ÿ‘๐Ÿป Spring Security

 - ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘” ํ”„๋ ˆ์ž„์›Œํฌ

 - ๊ธฐ์กด ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ์—์„œ ์ธ์ฆ์ฒ˜๋ฆฌ ํ•œ ๊ฒƒ ๋ณด๋‹ค ๋งž์ถคํ˜• ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ


๐Ÿ“ Security ๊ด€๋ จ ์šฉ์–ด

๐Ÿ’ก ํ•„ํ„ฐ Filter

  - ์ฒด์ธ์ฒ˜๋Ÿผ ์—ฎ์–ด์ ธ ์žˆ์–ด ํ•„ํ„ฐ ์ฒด์ธ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ๋ชจ๋“  ์š”์ฒญ์€ ์ด ํ•„ํ„ฐ ์ฒด์ธ์„ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ณ์•ผํ•จ

  - Spring Security๋Š” ํ•„ํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring MVC์™€ ๋ถ„๋ฆฌ๋˜์–ด ๊ด€๋ฆฌ ๋ฐ ๋™์ž‘

๐Ÿ’ก ์ ‘๊ทผ ์ฃผ์ฒด Principal

 - ๋ณดํ˜ธ๋œ ๋Œ€์ƒ์— ์ ‘๊ทผํ•˜๋Š” ์œ ์ €

๐Ÿ’ก ์ธ์ฆ Authentication

 - ์ฆ๋ช…

 - ์œ ์ €๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

 - ํ†ต์ƒ ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ

๐Ÿ’ก ์ธ๊ฐ€ Authorization

 - ํ—ˆ๋ฝ

 - ์œ ์ €์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ™•์ธ ๋ฐ ํ—ˆ๋ฝํ•˜๋Š” ๊ฒƒ

๐Ÿ’ก ์„ธ์…˜ - ์ฟ ํ‚ค

 -  Spring Security๋Š” ์„ธ์…˜ ์ฟ ํ‚ค ๋ฐฉ์‹์œผ๋กœ ์ธ์ฆ

(1) ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธ ์‹œ๋„ : Http Request
(2) AuthenticationFilter์—์„œ ๋ถ€ํ„ฐ User DB ๊นŒ์ง€ ๋“ค์–ด๊ฐ
(3) DB์— ์žˆ๋Š” ์œ ์ €๋ผ๋ฉด UserDetails๋กœ ๊บผ๋‚ด์„œ ์œ ์ €์˜ Session ์ƒ์„ฑ
(4) Spring Security์˜ ์ธ๋ฉ”๋ชจ๋ฆฌ ์„ธ์…˜ ์ €์žฅ๋„์ธ SecurityContextHolder์— ์ €์žฅ
(5) ์œ ์ €์—๊ฒŒ session ID์™€ ํ•จ๊ป˜ ์‘๋‹ต์„ ๋‚ด๋ ค์คŒ
(6) ์ดํ›„ ์š”์ฒญ์—์„œ๋Š” ์š”์ฒญ ์ฟ ํ‚ค์—์„œ JSESSIONID๋ฅผ ๋ณด๊ณ  ๊ฒ€์ฆ ํ›„ ์œ ํšจํ•˜๋ฉด Authentication ๋ฐ˜ํ™˜

๐Ÿ“ Spring Security ๋‚ด๋ถ€ ๊ตฌ์กฐ

๐Ÿ’ก SecurityContextHolder

 - SecurityContext๋ฅผ ์ œ๊ณตํ•˜๋Š” static ๋ฉ”์†Œ๋“œ ์ง€์›

๐Ÿ’ก SecurityContext

 - ์ ‘๊ทผ ์ฃผ์ฒด์™€ ์ธ์ฆ์— ๋Œ€ํ•œ ์ •๋ณด์ธ Authentication์„ ๋‹ด๊ณ  ์žˆ๋Š” Context

๐Ÿ’ก Authentication

 - Pricipal๊ณผ GrantAuthority๋ฅผ ์ œ๊ณตํ•จ

 - ์ธ์ฆ์ด ์ด๋ฃจ์–ด์ง€๋ฉด ํ•ด๋‹น Authentication์ด ์ €์žฅ๋จ

๐Ÿ’ก GrantedAuthority

 - ROLEADMIN, ROLE_USER ๋“ฑ ์ ‘๊ทผํ•˜๋ ค๋Š” ์œ ์ €๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ„

 - prefix๋กœ ROLE์ด ๋ถ™์Œ

 - ์ธ์ฆ ํ›„ ์ธ๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉ

 - ๊ถŒํ•œ์€ ์—ฌ๋Ÿฌ ๊ฐœ ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Collection<(GrantedAuthority)> ํ˜•ํƒœ๋กœ ์ œ๊ณต


๐Ÿ“ Spring Security ์ธ์ฆ ์ฒ˜๋ฆฌ ์ˆœ์„œ

 โ‘  ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด AuthenticationFilter๋ฅผ ๊ฑฐ์นจ - UsernamePasswordAuthenticaionFilter

 โ‘ก ์š”์ฒญ์— ๋”ฐ๋ฅธ Token ์ƒ์„ฑ - Authentication ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด

 โ‘ข Token์„ Authentication Manager์—๊ฒŒ ์ด ํ† ํฐ์ด ์˜ฌ๋ฐ”๋ฅธ ์œ ์ €์ธ์ง€ ๋ฌผ์–ด๋ด„

 โ‘ฃ Authentication Manager์€ 1๊ฐœ ์ด์ƒ์˜ Authentication Provider์„ ๊ฐ–๊ณ  ์žˆ์Œ

      Provider์€ Token ๊ฐ์ฒด๋ฅผ ์ ์ ˆํžˆ ํŒ๋‹จํ•˜์—ฌ ์ธ์ฆ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•จ

 โ‘ค Provider์€ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ์„œ๋น„์Šค์ธ UserDetailsService ํด๋ž˜์Šค์— ํ•ด๋‹น ์œ ์ €์˜ ์ธ์ฆ์š”์ฒญ์„ ๋ณด๋‚ด

     ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด

 โ‘ฅ User Details Service ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ UserDetails๋ฅผ ๋ฐ˜ํ™˜

 โ‘ฆ Provider์€ UserDetailsService์—์„œ ๋ฐ˜ํ™˜๋œ UserDetails์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ œ๊ณตํ•œ ํ† ํฐ์„ ๋Œ€์กฐํ–‡

     ์ด์šฉ์ž๊ฐ€ ์ •๋‹นํ•œ ์‚ฌ์šฉ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ → Security Context์— ์ €์žฅ

'Study > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] OAuth2 ์ธ์ฆ  (0) 2022.08.03
[TIL] JWT  (0) 2022.07.29
[TIL] Spring Security ์ธ๊ฐ€  (0) 2022.07.26
[TIL] Filter vs Interceptor  (0) 2022.07.25
[TIL] Spring Security ์ธ์ฆ  (0) 2022.07.25