๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring๐Ÿƒ/Spring Security๐Ÿ›ก๏ธ

์ •์ˆ˜์›์˜ Spring Security Oauth2 (3) : ์‹œํ๋ฆฌํ‹ฐ ์ธ์ฆ ์ธ๊ฐ€ ํ๋ฆ„

728x90

1. DelegatingFilterProxy

์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜์Œ์œผ๋กœ ๋ฐ›๋Š”๋‹ค.

- ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ FilterChain์„ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก, DelegatingFilterProxy๊ฐ€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ํ•„ํ„ฐ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์œ„์ž„ํ•œ๋‹ค

 

2. FilterChainProxy

๋ณด์•ˆ์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ํ•„ํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•„ํ„ฐ ์ฒด์ธ. ํ•ด๋‹น ํ•„ํ„ฐ ์ฒด์ธ์—์„œ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•„ํ„ฐ๋ฅผ ํ˜ธ์ถœํ•ด ์ธ์ฆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„๋ฅผ ํ•œ๋‹ค

- ์ธ์ฆ ์˜์—ญ

3. AuthenticationFilter

  • Authentication ๊ฐ์ฒด ์ƒ์„ฑ : ์ธ์ฆ์„ ์œ„ํ•œ ์ •๋ณด(ex ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด

4.AuthenticationManager : ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„ ๋‚ด๋ถ€ ์ธ์ฆ๋กœ์ง ์ˆ˜ํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ์ธํ„ฐํŽ˜์ด์Šค

-> ๋‚ด๋ถ€ ์ธ์ฆ๋กœ์ง์€ AuthentucationProvider๊ฐ€ ์ˆ˜ํ–‰ํ•œ๋‹ค

 

5. AuthentucationProvider : Manager์— ์˜ํ•ด ๋‚ด๋ถ€ ์ธ์ฆ์„ ์œ„์ž„๋ฐ›์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์—ฌ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ์ธ์ฆ์„ ์ง„ํ–‰ํ•œ๋‹ค.

(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ถœ ๋“ฑ : userDetailsService, ํ•ด๋‹น ์„œ๋น„์Šค๋Š” UserDetails ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜)

  • UserDetails : ์ธ์ฆ์— ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๊ฐ์ฒด
  • Authentication : ์ธ์ฆ์„ ์œ„ํ•œ ๊ฐ์ฒด ๋ฐ ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ํ›„ ์ž๊ฒฉ ์ฆ๋ช… ๋“ฑ์ด ์ถ”๊ฐ€๋กœ ํฌํ•จ๋œ ๊ฐ์ฒด๋ฅผ ํ†ต์นญ

- ์ธ๊ฐ€ ์˜์—ญ

์ธ์ฆ์ด ์™„๋ฃŒ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•œ ํŠน์ • ์˜์—ญ์— ์ ‘๊ทผ ์‚ฌ์ˆ˜ํ–‰ ์ ˆ์ฐจ

6. FilterSecurityInterceptor : ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น URL์— ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ๊ฒ€์ฆ

 

7. AccessDecisionManager : ์ธ๊ฐ€ ์ž‘์—…์„ ์œ„์ž„๋ฐ›์€ ์ธํ„ฐํŽ˜์ด์Šค, ์—ฌ๋Ÿฌ ๊ฐœ์˜ AccessDecisionVoter์™€ ํ•จ๊ป˜, AccessDecisionVoter์˜ ํˆฌํ‘œ๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํˆฌํ‘œ ์ „๋žต์— ๋”ฐ๋ผ ์ธ๊ฐ€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

 

  • AffirmativeBased: ํ•˜๋‚˜๋ผ๋„ ACCESS_GRANTED๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์ ‘๊ทผ์„ ํ—ˆ์šฉ.
  • ConsensusBased: ๋‹ค์ˆ˜์˜ ACCESS_GRANTED๊ฐ€ ๋‚˜์˜ค๋ฉด ์ ‘๊ทผ์„ ํ—ˆ์šฉ.
  • UnanimousBased: ๋ชจ๋“  ํˆฌํ‘œ์ž๊ฐ€ ACCESS_GRANTED๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ์ ‘๊ทผ์„ ํ—ˆ์šฉ

 

8. AccessDecisionVoter : ํˆฌํ‘œ ์ˆ˜ํ–‰ ๋ฐ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์— ์–ด๋–ค ๊ถŒํ•œ์„ ๊ฒ€์ฆ(ํˆฌํ‘œ)ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

- ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œ

AuthenticationEntryPoint๋ฅผ ํ†ตํ•ด 401 ๋˜๋Š” 403 ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

401 : ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž

403 : ์ธ๊ฐ€๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž

728x90