Categories
Algorithm๐งฉ
๋ฐฑ์ค ๐
BookReview๐
CleanCodeโจ
Network ๐จ
Database ๐
DevOpsโ๏ธ
์๋ฌ ์ผ๊ธฐ๐
Etc๐ฌ
Fishy Fish ๐ฃ
Spring๐ฑ
Spring Security
Spring Security
์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ
- ๊ธฐ๋ณธ์ ์ธ ๋ณด์๊ธฐ๋ฅ
- ์ธ์ฆ: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ๋ ์ฌ์ฉ์๋ฅผ ํน์ ํ๋ ๊ธฐ๋ฅ
- ์ธ๊ฐ: ํน์ ํ ์ฌ์ฉ์์ ๋ํด ์ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ทผ์ ์ ํํ๋ ๊ธฐ๋ฅ
- ๊ฐํ๋ ๋ณด์ ๊ธฐ๋ฅ
- ์ธ์
๊ด๋ฆฌ
- ์ธ์ ๋ผ์ดํ ์ฌ์ดํด ๊ด๋ฆฌ
- CSRF
- ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ๋ณ์กฐ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์ฌ์ฉ์ ๋ณดํธ
- ๋ธ๋ผ์ฐ์ ๋ณด์๊ธฐ๋ฅ ์ฐ๊ณ
- ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ์ ์ฉํ ๊ณต๊ฒฉ์์ ์ฌ์ฉ์ ๋ณดํธ
- ์ธ์
๊ด๋ฆฌ
ํน์ง
- ์ธ์ฆ, ์ธ๊ฐ ๊ตฌํ์ ์ํ ๋ค์ํ ํํฐ ํด๋์ค ์ ๊ณต
- 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์ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฉ์ธ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๋ณดํธ
๊ตฌ์กฐ
- ์์ฒญ
- ํํฐ๋ณด๋ค ์์ FilterChainProxy ์ฒ๋ฆฌ ๋จผ์ ์ค์
- ์ธ์ฆ ๋ฐฉ์์ ๋ง๊ฒ๋ FilterChain ์คํ
์ฃผ์ ์ปดํฌ๋ํธ
- FilterChainProxy: ํ๋ ์ ์ํฌ์ ์ง์
์ ์ญํ ์ ํ๋ ์๋ธ๋ฆฟ ํํฐ ํด๋์ค
- ์ ์ฒด ํ๋ฆ์ ์ ์ดํ๊ณ ๋ณด์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํํฐ์ ์์ํ๋ ๋ฐฉ์์ผ๋ก ๋์
- HttpFirewall: ๋ฐฉํ๋ฒฝ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํ ์ธํฐํ์ด์ค
- ๊ธฐ๋ณธ์ ์ผ๋ก DefaultHttpFirewall ํด๋์ค ์ฌ์ฉ
- ์ธ๊ฐ๋์ง ์์ ์์ฒญ์ ์ฐจ๋จํ๋ ์ญํ ์ํ
- SecurityFilterChain
- FilterChainProxy๊ฐ ๋ฐ์ ์์ฒญ์ ์ ์ฉํ ๋ณด์ ํํฐ ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธํฐํ์ด์ค
- ๊ธฐ๋ณธ์ ์ผ๋ก DefaultSecurityFilterChain ํด๋์ค ์ฌ์ฉ
- ์์ฒญ ํจํด๋ณ๋ก ๋ณด์ ํํฐ ๊ด๋ฆฌ
- Securiy Filter: ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋ธ๋ฆฟ ํํฐ ํด๋์ค
์คํ๋ง ์ํ๋ฆฌํฐ ์ธ์ฆ ํํฐ
- ์ธ์ฆ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ํ ๊ตฌํ์ ์ ๊ณตํ๋ ์๋ธ๋ฆฟ ํํฐ
- UsernamePasswordAuthenticationFilter(ํผ์ธ์ฆ์ฉ ํํฐ), basic ์ธ์ฆ, Digest ์ธ์ฆ, RememberMe ์ธ์ฆ ๋ฑ ๋ค์ํ ์๋ธ๋ฆฟ ํํฐ ํด๋์ค ์ ๊ณต
- ์คํ๋ง ํ๋ ์์ํฌ์ ์น ๋ชจ๋์์๋ ์๋ธ๋ฆฟ API์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ DelegationFilterProxy ํด๋์ค๋ฅผ ์ ์
์ธ์ฆ ์ฒ๋ฆฌ ์ํ์ ์ํ ์ธํฐํ์ด์ค
- AuthenticationManager
- ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํ ์ธํฐํ์ด์ค
- ์ค์ ์ธ์ฆ ์ฒ๋ฆฌ๋ AuthenticationProvider์ ์์ํ๊ณ ๋ฐํ๋๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๋์
- AuthenticationProvider: ์ธ์ฆ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ์ธํฐํ์ด์ค
- ์คํ๋ง ์ํ๋ฆฌํฐ๋ ์ธ์ฆ ๋ฐฉ์๋ณ๋ก ๋ค์ํ ๊ตฌํ ํด๋์ค ์ ๊ณต