์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- ComputerScience
- ํ์ด์ฌ
- ์ฅํธ์์ค
- K๋ฐฐํฐ๋ฆฌ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์ค๋ผํด
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ํ๋ก๊ทธ๋๋ฐ
- ๋ ์
- ์๋ฐ
- ๊นํ๋จ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- database
- JavaScript
- ๊น๋ฏธ๊ฒฝ
- ์ํ
- Python
- ๋ฐ์ํ
- ๋ผํ๋ผ์ค์๋ง๋
- ์ปดํจํฐ๊ณผํ
- html
- Java
- ์ฝ๋ฉ
- ๊ฐ๋ฐ
- css
- ์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Today
- Total
JiYoung Dev ๐ฅ
Spring Security ์ ์ฉ๊ธฐ (1) Spring Security๋? ๋ณธ๋ฌธ
์๋กญ๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด์ ์ ์ฉํด๋ณด๊ณ ์ถ์๋ ๊ธฐ์ ์ค ํ๋์ธ Spring Security.
์ด๋ ํ ๊ธฐ์ ์ด๋ฉฐ ์ด๋ ํ ์๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๊ฒ๊น์ง ํ๋ ํ๋ ํฌ์คํ ํด๋ณด๊ณ ์ ํ๋ค.
์ด๋ฒ ํฌ์คํ ์ Spring Security ์ ์ฉ๊ธฐ์ ์ฒซ ๋ฒ์งธ ํํธ, Spring Security๋ ๋ฌด์์ธ์ง์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ณ ์ ํ๋ค.
๋ชฉ์ฐจ
1. Spring Security ๊ฐ๋
2. Spring Security ํน์ง
3. Architecture
๐ค Spring Security ๊ฐ๋
Spring Security๋ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ๋ฐ ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ์ ๋ํ ๋ณดํธ๋ฅผ ์ ๊ณตํ๋ Spring ํ๋ ์์ํฌ์ด๋ค.
๊ฐ๋ฐ์ ํ ๋ ๊ธฐ๋ฅ ๋ถ๋ถ์์ ๊ฐ์ฅ ๋จผ์ ์์ ํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๋ก๊ทธ์์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ผ ๊ฒ์ด๋ค.
๊ฐ๋จํด ๋ณด์ด์ง๋ง ์ค์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ๊ฐ์ธ์ ๋ณด์ ๋ง๋ฟ์ ์์ด ๋ณด์, ์ธ๊ฐ ๋ฟ๋ง ์๋๋ผ ์ธ์ /๊ถํ ๊ด๋ฆฌ ๋ฑ ์๊ฐํด์ผ ํ ๋ถ๋ถ์ด ๋ง์ ๋ถ๋ถ์ด๋ค. Spring Security๋ Spring ์ํ๊ณ ๋ด์์ ๊ฐ๋ฐ์๋ค์ด ๋ณด์ ๊ด๋ จ ๊ธฐ๋ฅ์ ํจ์จ์ ์ด๊ณ ์ ์ํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ค๋ค.
๐ค Spring Security ํน์ง
Spring Security๋ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ๋ฐ ์ผ๋ฐ์ ์ธ ์ ์ฉ์ ๋ํ ๋ณดํธ๋ฅผ ์ํ ํฌ๊ด์ ์ธ ์ง์์ ์ ๊ณตํ๋ค.
๋ํ ์ฌ์ฉ์ ๋จ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํตํฉ์ ์ ๊ณตํ๋ค.
1. ์ธ์ฆ(Authentication)
์ธ์ฆ์ ํน์ ๋ฆฌ์์ค์ ์์ธ์คํ๋ ค๋ ์ฌ๋์ ์ ์์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ด๋ค.
2. ๊ถํ ๋ถ์ฌ(Authorization)
1. ์์ฒญ ๊ธฐ๋ฐ ๊ถํ ๋ถ์ฌ
2. ๋ฉ์๋ ๊ธฐ๋ฐ ๊ถํ ๋ถ์ฌ
๊ถํ ๋ถ์ฌ๋, ํน์ ๋ฆฌ์์ค์ ์์ธ์ค ํ ์ ์๋ ์ฌ๋์ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค.
Spring Security๋ ์์ฒญ/ ๊ธฐ๋ฐ ์ธ์ฆ๊ณผ ๋ฉ์๋ ๊ธฐ๋ฐ ์ธ์ฆ์ ํ์ฉํ๋ค.
3. ์ ์ฉ์ผ๋ก๋ถํฐ ๋ณดํธ(Protection Against Exploits)
Spring Security๋ ์ผ๋ฐ์ ์ธ ์ ์ฉ์ ๋ํ ๋ณดํธ๋ฅผ ์ ๊ณตํ๋ค.
์ฌ๊ธฐ์ ์ผ๋ฐ์ ์ธ ์ ์ฉ์ด๋
1. CSRF
2. HTTP ํค๋
3. HTTP ์์ฒญ
์์ 3๊ฐ์ง๋ฅผ ๋งํ๋ค.
3-1. CSRF(Cross Site Request Forgery) : ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ ๊ณต๊ฒฉ
CSRF๋ ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์์ฒญ์ ๋ณด๋ด๋๋ก ์ ๋ํ๋ ๊ณต๊ฒฉ ํ์๋ฅผ ๋งํ๋ค.
CSRF๋ ์์ฑ๋ ์์ฒญ์ด ์ฌ์ฉ์์ ๋์๋ฅผ ๋ฐ์๋์ง ํ์ธํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ทจ์ฝ์ ์ ์ด์ฉํ๋ค.
๊ณต๊ฒฉ์์ ์์ฒญ์ด ์ฌ์ฉ์์ ์์ฒญ์ธ ๊ฒ์ฒ๋ผ ์์ด๋ ๊ณต๊ฒฉ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ํฌ๋ก์ค ์ฌ์ดํธ ์์กฐ ์์ฒญ์ด๋ผ ํ๋ค.
CSRF๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์์ฌ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฌด๋จ์ผ๋ก ํน์ ์์ ์ ์งํํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
1. ๊ณต๊ฒฉ์๊ฐ ํน์ ์ํ์ ๊ณ์ข์์ ๊ณต๊ฒฉ์์ ๊ณ์ข๋ก ์ฒ๋ง์์ ์ก๊ธํ๋ผ๋ ์์ฒญ์ ์์กฐํ๋ค.
2. ์์กฐํ ์์ฒญ์ ํ์ดํผ๋งํฌ์ ์ฝ์ ํด ์ด๋ฉ์ผ๋ก ์ ์กํ๊ฑฐ๋ ์น์ฌ์ดํธ ์์ฒด์ ์ฝ์ ํ๋ค.
3. ์ฌ์ฉ์๊ฐ ๊ณต๊ฒฉ๊ฐ ์์ฑํ ์ด๋ฉ์ผ ํ์ดํผ๋งํฌ๋ ์น์ฌ์ดํธ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ์ํ์ ์ฒ๋ง์์ ์ก๊ธํ๋ผ๋ ์์ฒญ์ด ์ ์ก๋๋ค.
4. ์์ฒญ์ ๋ฐ์ ์ํ ์๋ฒ๋ ์ฌ์ฉ์์ ์์ฒญ๋๋ก ์ก๊ธ์ ์งํํ๋ค.
์์ ๊ฐ์ด CSRF ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ ์ด์ ๋ ํผํด์ ์น์ฌ์ดํธ์ HTTP ์์ฒญ๊ณผ ๊ณต๊ฒฉ์ ์น์ฌ์ดํธ์ ์์ฒญ์ด ์ ํํ ๋์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
Spring Security๋ ์ด๋ฌํ ์ํ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฅผ ์ํด
1. ๋๊ธฐํ ์ฅ์น ํ ํฐ ํจํด(Synchronizer Token Pattern)
2. ์ธ์ ์ฟ ํค์ SameSite ์์ฑ ์ง์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. (SameSite Attribute)
โป ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์ฝ๊ธฐ ์ ์ฉ์ด์ด์ผ ํ๋ค.
๋๊ธฐํ ์ฅ์น ํ ํฐ ํจํด(Synchronizer Token Pattern)
ํด๋น ์๋ฃจ์ ์ ๊ฐ HTTP ์์ฒญ์ Session, Cookie ์ธ์๋ CSRF Token์ด๋ผ๋ ์์ ํ ๋ฌด์์ ์์ฑ๊ฐ์ด HTTP ์์ฒญ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ด๋ค. HTTP ์์ฒญ์ด ์ ์ถ๋๋ฉด ์๋ฒ๋ ์์๋๋ CSRF ํ ํฐ์ ์กฐํํ๊ณ ์ด๋ฅผ HTTP ์์ฒญ์ ๋ด๊ธด ํ ํฐ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด ์์ฒญ์ ์๋ฝํ๊ณ , ๋ค๋ฅด๋ฉด ์์ฒญ์ ๊ฑฐ๋ถํ๋ ๋ฐฉ์์ด๋ค.
SameSite ์์ฑ
ํด๋น ์๋ฃจ์ ์ ์น ๋ธ๋ผ์ฐ์ ์ฟ ํค ๋ณด์๊ณผ ๊ด๋ จ๋ ์์ฑ ์ค ํ๋์ด๋ค. ์ด ์์ฑ์ ์ฟ ํค๋ฅผ ์ด๋ค ์ํฉ์์ ์ ์กํ ๊ฒ์ธ์ง ์ ์ดํ๋ค.
1. Strict : ์ฟ ํค๋ ํญ์ ๋์ผํ ์ถ์ฒ ์์ฒญ์์๋ง ์ ์ก๋๋ค.
2. Lax : ์ฟ ํค๋ ํ์ฌ ์ฌ์ดํธ์์์ GET ์์ฒญ์ ๋ํด์๋ง ์ ์ก๋๋ค.
3. None : ์ฟ ํค๋ ๋ชจ๋ ์์ฒญ์ ๋ํด ์ ์กํ๋ค. ํด๋น ์ต์ ์ ๋ณดํต HTTPS ์ฐ๊ฒฐ์์๋ง ๋์ํ๋ฉฐ, Secure ์์ฑ์ด ํจ๊ป ์ฌ์ฉ๋์ด์ผ ํ๋ค.
4. ํตํฉ(Integration)
Spring Security๋ ์๋ง์ ํ๋ ์์ํฌ ๋ฐ API์์ ํตํฉ์ ์ ๊ณตํ๋ค.
๋ํ์ ์ผ๋ก ์ํธํ, ์คํ๋ง ๋ฐ์ดํฐ, Java ๋์์ฑ API, Jackson, Localization์ ๋ํ ํตํฉ์ ์ ๊ณตํ๋ค.
Cryptography
Spring Security Crypto ๋ชจ๋์ ๋์นญ์ํธํ, ํค ์์ฑ ๋ฐ ๋น๋ฐ๋ฒํธ ์ธ์ฝ๋ฉ์ ์ง์ํ๋ค.
Spring Data Integration
Spring Security๋ ์ฟผ๋ฆฌ ๋ด์์ ํ์ฌ ์ฌ์ฉ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ Spring Data ํตํฉ์ ์ ๊ณตํ๋ค.
Concurrency Support
๋ค์ค ์ค๋ ๋ ํ๊ฒฝ์์ Spring Security ์์ ์ ์ํ ๋ฎ์ ์์ค์ ์ถ์ํ๋ฅผ ์ ๊ณตํ๋ค.
Jaskson Support
Spring Security๋ Spring Security ๊ด๋ จ ํด๋์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด Jackson ์ง์์ ์ ๊ณตํ๋ค.
Localization
์ธ์ฆ ์คํจ ๋ฐ ์์ธ์ค ๊ฑฐ๋ถ์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ์์ธ ๋ฉ์์ง๋ฅผ ํ์งํํ ์ ์๋ค.
๐ค Architecture
Spring Security์ ์๋ธ๋ฆฟ ์ง์์ ์๋ธ๋ฆฟ ํํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
์๋ธ๋ฆฟ ํํฐ(Servlet Filter)๋?
Sevlet ์คํ ์ , ํ์ ์ด๋ค ์์ ์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก Servlety Container์ ๋ฑ๋กํ์ฌ ์ฌ์ฉํ๋ค.
[์๋ธ๋ฆฟ ํํฐ ํ๋ฆ]
• HTTP ์์ฒญ → WAS → Filter → Servlet → Controller
ํํฐ๋ฅผ ์ ์ฉํ๊ฒ ๋๋ฉด ํํฐ๊ฐ ํธ์ถ ๋ ๋ค์ ์๋ธ๋ฆฟ์ ํธ์ถํ๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๊ณ ๊ฐ์ ์์ฒญ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ์๊ตฌ์ฌํญ์ด ์๋ค๋ฉด ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
[์๋ธ๋ฆฟ ํํฐ ์ ํ]
• HTTP ์์ฒญ → WAS → Filter
์์ ํ๋ฆ๊ณผ ๊ฐ์ด ํํฐ์์ ์ ์ ํ์ง ์์ ์์ฒญ์ด๋ผ ํ๋จํ์ฌ ์๋ธ๋ฆฟ์ ํธ์ถํ์ง ์์ ์๋ ์๋ค.
์ด๋ ๊ฒ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ ์์ฒญ์ธ์ง, ์ ์ ํ์ง ์์ ์์ฒญ์ธ์ง ํ๋จํด ์๋ธ๋ฆฟ์ ํธ์ถํ๊ฑฐ๋ ํธ์ถํ์ง ์์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ธฐ์ ์ ํฉํ๋ค.
[์๋ธ๋ฆฟ ํํฐ ์ฒด์ธ]
• HTTP ์์ฒญ → WAS → Filter1 → Filter2 → Filter3 → Servlet Filter → Servlet → Controller
ํํฐ๋ฅผ ์ฒด์ธํ์ฌ ๋ค์์ ํํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
1. DelegatingFilterProxy
Spring Security๋ ์ฌ์ฉํ๊ณ ์ ํ๋ FilterChain๋ค์ Servlet Container ๊ธฐ๋ฐ์ ํํฐ ์์์ ๋์์ํค๊ธฐ ์ํด DelegatingFilterProxy๋ผ๋ ํด๋์ค๋ฅผ ์ด์ฉํ๋ค.
Spring Security์ ํํฐ๋ค์ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๊ฐ ์๋ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด๋ก ์ ์๋๋ค. ์ด๋ฅผ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ํตํฉํ๊ธฐ ์ํด 'DelegatingFilterProxy'๊ฐ ์ฌ์ฉ๋๋ค. DelegatingFilterProxy๋ ์ธ์ฆ, ์ธ๊ฐ, ๋ก๊น ๋ฑ ๋ณด์ ๊ด๋ จ ์์ ์ ์ํํ๋ ํํฐ ์ฒด์ธ์ ๊ด๋ฆฌํ๊ณ , ๊ฐ ํํฐ๊ฐ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์์ ์ ์๋ ๋น์ผ๋ก ์์ํ ์ ์๋๋ก ํ๋ค.
์ฆ, DelegatingFilterProxy๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Spring Security ์ฌ์ด์ ๋ค๋ฆฌ ์ญํ ์ ํ๋ค.
2. FilterChainProxy
FilterChainProxy๋ ๋ณด์ ํํฐ๋ค์ ๊ด๋ฆฌํ์ฌ HTTP ์์ฒญ์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
๊ฐ ํํฐ๋ ํน์ ํ ๋ณด์ ์์ ์ ์ํํ๋ฉฐ, ์ด๋ฌํ ํํฐ๋ค์ ์ฒด์ธ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๊ฐ๊ฐ์ ํํฐ๋ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํ์ํ ์์ ์ ์ํํ ํ ๋ค์ ํํฐ๋ก ์์ฒญ์ ์ ๋ฌํ๋ค.
์ด๋ฐ์์ผ๋ก ํํฐ ์ฒด์ธ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฉด์ ๋ณด์ ์์ ์ด ์ํ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ(Authentication), ์ธ๊ฐ(Authorization), ์ธ์ ๊ด๋ฆฌ, CSRF ๋ฐฉ์ด, ๋ก๊น ๋ฑ์ด ์๋ค.
๊ฐ๊ฐ์ ๋ณด์ ๊ธฐ๋ฅ์ ํ๋ ์ด์์ ํํฐ๋ก ๊ตฌํ๋๋ฉฐ, ์ด๋ฌํ ํํฐ๋ค์ FilterChainProxy๊ฐ ๊ด๋ฆฌํ๋ค.
Spring Security์์๋ ์ฌ๋ฌ ๊ฐ์ FilterChainProxy๊ฐ ์ฌ์ฉ๋ ์ ์๋ค. ๊ฐ๊ฐ์ FilterChainProxy๋ ํน์ ํ ์์ฒญ ํจํด ๋๋ ๋ณด์ ์์ค์ ๋ฐ๋ผ ๋ค๋ฅธ ํํฐ ์ฒด์ธ์ ๊ด๋ฆฌํ๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ๋ถ๋ถ์ ๋ํด ์๋ก ๋ค๋ฅธ ๋ณด์ ๊ตฌ์ฑ์ ์ ์ฉํ ์ ์๋ค.
FilterChainProxy๋ ์ผ๋ฐ์ ์ผ๋ก ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์์ ๋น์ผ๋ก ์ ์๋๋ค. ์ฆ, ์คํ๋ง IOC ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๊ณ ์์กด์ฑ ์ฃผ์ ์ ๋ฐ์ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ง์ ์ ์ผ๋ก ์คํ๋ง ๋น์ ์ธ์ํ์ง ๋ชปํ๋ค. ๋์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ Filter๋ฅผ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ๋ค. ์ฆ, ์คํ๋ง์์ ๊ด๋ฆฌ๋๋ FilterChainProxy๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋ฑ๋กํ๊ธฐ ์ํด์๋ DelegatingFilterProxy๋ฅผ ์ฌ์ฉํ์ฌ FilterChainProxy๋ฅผ ๋ฑ๋กํด์ผ ํ๋ค.
๊ฒฐ๊ตญ, FilterChainProxy๋ ์คํ๋ง ๋น์ผ๋ก ์ ์๋์ง๋ง, ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋ฑ๋กํ๊ธฐ ์ํด DelegatingFilterProxy๋ก ๋ํ๋์ด์ผ ํ๋ค. ์ด๋ฅผ ํตํด FilterChainProxy๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋ผ์ดํ์ฌ์ดํด์ ๋ง๊ฒ ๋์ํ๊ณ ํํฐ ์ฒด์ธ์ ๊ด๋ฆฌํ ์ ์๋ค.
3. SecurityFilterChain
SecurityFilterChain์ ํ์ฌ ์์ฒญ์ ๋ํด ์ด๋ค Spring Security ํํฐ ์ธ์คํด์ค๋ฅผ ํธ์ถํด์ผ ํ๋์ง ๊ฒฐ์ ํ๊ธฐ ์ํด FilterChainProxy์ ์ํด ์ฌ์ฉ๋๋ค.
SecurityFilterChain์ ์๋ ๋ณด์ ํํฐ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๋น์ผ๋ก ์ ์๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํํฐ๋ค์ DeligatingFilterProxy ๋์ FilterChainProxy์ ๋ฑ๋ก๋๋ค.
๋ค์ค SecurityFilterChain ๊ทธ๋ฆผ์์ FilterChainProxy๋ ์ด๋ค SecurityFilterChain์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ค. ์ผ์นํ๋ SecurityFilterChain๋ง ํธ์ถ๋๋ค. ์๋ฅผ๋ค์ด /api/messages/ URL์ด ์์ฒญ๋ ๊ฒฝ์ฐ, /api/** ํจํด์ SecurityFilterChain0์ ์ผ์นํ๋ฏ๋ก SecurityFilterChain0๋ง ํธ์ถ๋๋ค.
4. Security Filters
์ค์ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ๊ณผ ๊ฐ์ ๋ณด์ ์์ ์ ์ํํ๋ ํํฐ๋ฅผ ๋งํ๋ค. ์ ๊ณตํ๋ ์ข ๋ฅ๋ก๋ ์ธ์ฆ ํํฐ(Authentication Filter), ์ธ๊ฐ ํํฐ(Authorization Filter), ์ธ์ ๊ด๋ฆฌ ํํฐ(Session Management Filter), ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง ํํฐ(Logging and Monitoring Filter) ๋ฑ์ด ์๋ค.
์ ๋ฆฌํ์๋ฉด,
์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ ์ธ์ฆ, ์ธ๊ฐ ๋ฑ์ ์์ ์ ์ํํ๋ Security Filter๋ค์ด ์กด์ฌํ๊ณ , ์ด๋ฌํ Security Filter๋ SecurityFilterChain์ผ๋ก ๊ตฌ์ฑ๋๋ค. SecurityFilterChain์ ๊ฐ ํํฐ์ ์์์ ๊ตฌ์ฑ์ ์ ์ํ๋ค.
FilterChainProxy๋ ์ค์ ๋ก ์๋ธ๋ฆฟ ํํฐ ์ฒด์ธ์ ๊ด๋ฆฌํ๋ Spring Security ์ ํต์ฌ ํด๋์ค๋ก, HTTP ์์ฒญ์ ๋ง๋ SecurityFilterChain์ ํธ์ถํ๊ณ , ์คํ๋ง์์ ๊ด๋ฆฌ๋๋ SecurityFilterChain์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ๊ด๋ฆฌํ ์ ์๋๋ก DelegationgFilterProxy๋ก ๋ํ ์์ผ ์ฃผ๋ ์ญํ ์ ํ๋ค. ๊ทธ๋ฌ๋ FilterChainProxy๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์์ค ๊ด๋ฆฌ๋๋, ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ ํด๋์ค๋ก, DelegationgFilterProxy๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ๋ฑ๋ก๋ Security ํํฐ๋ค์ ์๋ธ๋ฆฟ ํํฐ์ ๋ฑ๋กํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๐๐จ Security Filters : ์ธ์ฆ, ์ธ๊ฐ ๋ฑ์ ์์ ์ ์ํํ๋ ๋ณด์ ํํฐ. ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋จ
๐๐จ SecurityFilterChain : ์์ ๋ณด์ ํํฐ๋ค์ ๊ตฌ์ฑํ๋ ๊ฒ์ผ๋ก ํํฐ์ ์์์ ๊ตฌ์ฑ์ ์ ์ํ๋ค.
๐๐จ DelegatingFilterProxy : ์คํ๋ง ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๋ SecurityFilterChain์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋ ์ญํ
๐๐จ FilterChainProxy : ๋ณด์ ํํฐ ๊ด๋ฆฌ, ํํฐ ์ฒด์ธ ์ค์ , HTTP ์์ฒญ์ ๋ํ ๋ณด์ ์ฒ๋ฆฌ
๐ค ์ฐธ๊ณ ๋ฌธํ
https://www.elancer.co.kr/blog/view?seq=235
Spring Security๋? ์ฌ์ฉํ๋ ์ด์ ๋ถํฐ ์ค์ ๋ฐฉ๋ฒ๊น์ง ์๋ ค๋๋ฆฝ๋๋ค! I ์ด๋์ ๋ธ๋ก๊ทธ
ํํ์ด์ง์ ์ธ์ฆ ๋ฐ ๊ถํ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ๋ถ์ฌํด ์ธ์ฆ ๋ฐ ๊ถํ ๋ณดํธ ๊ธฐ๋ฅ์ ์์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ Spring์ ํ๋ ์์ํฌ ์ค ํ๋์ธ ‘Spring Security’์ ๋ํด ์ด๋์์์ ์์ธํ ์๋ ค๋๋ฆฝ๋๋ค. I spring
www.elancer.co.kr
https://docs.spring.io/spring-security/reference/servlet/
Servlet Applications :: Spring Security
Spring Security integrates with the Servlet Container by using a standard Servlet Filter. This means it works with any application that runs in a Servlet Container. More concretely, you do not need to use Spring in your Servlet-based application to take ad
docs.spring.io
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Security ์ ์ฉ๊ธฐ (3) JWT(JSON Web Tokens) ๊ฐ๋ (0) | 2024.04.29 |
---|---|
Spring Security ์ ์ฉ๊ธฐ (2) Spring Security Configuration (0) | 2024.04.25 |
๊ธฐ์ ๋ฉด์ ์ค๋น 5. Java ์ง๋ฌธ ์ ๋ฆฌ (1) | 2023.11.18 |
๊ธฐ์ ๋ฉด์ ์ค๋น 4. ์๋ฐ ๋ณ์์ ๋ฐ์ดํฐ ํ์ Primitive type & Reference type (1) | 2023.11.08 |
๊ธฐ์ ๋ฉด์ ์ค๋น 3. ๋ฉํฐ ์ค๋ ๋ (+ ํ๋ก์ธ์ค์ ์ค๋ ๋) (0) | 2023.11.07 |