Spring Security

Spring Security

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

  • ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ๊ธฐ๋Šฅ
    1. ์ธ์ฆ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ํŠน์ •ํ•˜๋Š” ๊ธฐ๋Šฅ
    2. ์ธ๊ฐ€: ํŠน์ •ํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ •๋ณด์™€ ๊ธฐ๋Šฅ์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ
  • ๊ฐ•ํ™”๋œ ๋ณด์•ˆ ๊ธฐ๋Šฅ
    1. ์„ธ์…˜ ๊ด€๋ฆฌ
      • ์„ธ์…˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ด€๋ฆฌ
    2. CSRF
      • ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ ๋ณ€์กฐ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ๋ณดํ˜ธ
    3. ๋ธŒ๋ผ์šฐ์ € ๋ณด์•ˆ๊ธฐ๋Šฅ ์—ฐ๊ณ„
      • ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋Šฅ์„ ์•…์šฉํ•œ ๊ณต๊ฒฉ์—์„œ ์‚ฌ์šฉ์ž ๋ณดํ˜ธ

ํŠน์ง•

  • ์ธ์ฆ, ์ธ๊ฐ€ ๊ตฌํ˜„์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ ํด๋ž˜์Šค ์ œ๊ณต
  • XML ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ธ์ฆ, ์ธ๊ฐ€ ์ •๋ณด ์ทจ๋“ ๊ฐ€๋Šฅ
  • HTTP basic์ธ์ฆ, HTML ํผ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ์‹ ์ง€์›
  • ์ธ๊ฐ€ ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•œ ํ™”๋ฉด ์ œ์–ด๋ฅผ ์œ„ํ•œ JSP ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต
  • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด์— AOP ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • spring-security-oauth2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต
    • ํ•˜๋‚˜์˜ ์•„์ด๋””๋กœ ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒด๊ณ„
  • Modernized Password Encoding
    • DelegatingPasswordEncoder ์ œ๊ณต: bcrypt

Spring Security ๊ตฌ์กฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์„ฑ

  • spring-security-core: ์ธ์ฆ ์ธ๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ์ ์ธ ์ปดํฌ๋„ŒํŠธ
  • spring-security-web: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ
  • spring-securiy-config: ๊ฐ ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์„ค์ •์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ
  • spring-securiyitaglibs: ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ JSP ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์„ฑ
  • spring-securiy-acl: ACL์„ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋„๋ฉ”์ธ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณดํ˜ธ

๊ตฌ์กฐ

  1. ์š”์ฒญ
  2. ํ•„ํ„ฐ๋ณด๋‹ค ์•ž์— FilterChainProxy ์ฒ˜๋ฆฌ ๋จผ์ € ์‹ค์‹œ
  3. ์ธ์ฆ ๋ฐฉ์‹์— ๋งž๊ฒŒ๋” FilterChain ์‹คํ–‰

์ฃผ์š” ์ปดํฌ๋„ŒํŠธ

  1. FilterChainProxy: ํ”„๋ ˆ์ž„ ์›Œํฌ์˜ ์ง„์ž…์  ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ ํด๋ž˜์Šค
    • ์ „์ฒด ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ณ  ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ•„ํ„ฐ์— ์œ„์ž„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘
  2. HttpFirewall: ๋ฐฉํ™”๋ฒฝ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    • ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultHttpFirewall ํด๋ž˜์Šค ์‚ฌ์šฉ
    • ์ธ๊ฐ€๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ์ฐจ๋‹จํ•˜๋Š” ์—ญํ•  ์ˆ˜ํ–‰
  3. SecurityFilterChain
    • FilterChainProxy๊ฐ€ ๋ฐ›์€ ์š”์ฒญ์— ์ ์šฉํ•  ๋ณด์•ˆ ํ•„ํ„ฐ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    • ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultSecurityFilterChain ํด๋ž˜์Šค ์‚ฌ์šฉ
    • ์š”์ฒญ ํŒจํ„ด๋ณ„๋กœ ๋ณด์•ˆ ํ•„ํ„ฐ ๊ด€๋ฆฌ
  4. Securiy Filter: ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ ํด๋ž˜์Šค

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ธ์ฆ ํ•„ํ„ฐ

  • ์ธ์ฆ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ
    • UsernamePasswordAuthenticationFilter(ํผ์ธ์ฆ์šฉ ํ•„ํ„ฐ), basic ์ธ์ฆ, Digest ์ธ์ฆ, RememberMe ์ธ์ฆ ๋“ฑ ๋‹ค์–‘ํ•œ ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ ํด๋ž˜์Šค ์ œ๊ณต
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์›น ๋ชจ๋“ˆ์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ API์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ DelegationFilterProxy ํด๋ž˜์Šค๋ฅผ ์ •์˜

์ธ์ฆ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

  1. AuthenticationManager
    • ์ธ์ฆ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    • ์‹ค์ œ ์ธ์ฆ ์ฒ˜๋ฆฌ๋Š” AuthenticationProvider์— ์œ„์ž„ํ•˜๊ณ  ๋ฐ˜ํ™˜๋˜๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋™์ž‘
  2. AuthenticationProvider: ์ธ์ฆ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    • ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ์ธ์ฆ ๋ฐฉ์‹๋ณ„๋กœ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ํด๋ž˜์Šค ์ œ๊ณต

homebdy
homebdy ๊ฐœ๋ฐœ์— ์ด์ œ ๋ง‰ ๋ฐœ ๋‹ด๊ทผ ์‚ฌ๋žŒ. ๊ฐœ๋ฐœ์— ์ด์ œ ๋ง‰ ๋ฐœ ๋‹ด๊ทผ ์‚ฌ๋žŒ. ๊ฐœ๋ฐœ์— ์ด์ œ ๋ง‰ ๋ฐœ ๋‹ด๊ทผ ์‚ฌ๋žŒ. ๊ฐœ๋ฐœ์— ์ด์ œ ๋ง‰ ๋ฐœ ๋‹ด๊ทผ ์‚ฌ๋žŒ.
comments powered by Disqus