๐ ๋ณด์
โญ ๋ณด์์ด๋?
๋ณด์์ ์ธ๋ฅ ์ญ์ฌ์ ๋ฌธ๋ช
์์ ๋นผ๋์ ์ ์๋ ์ค์ํ ๊ฐ๋
์ด๋ค.
์๊ธฐ์๋๋ถํฐ ๋, ๊ธ ๊ฐ์ด ์ค์ํ ์์ฐ์ ์งํค๊ธฐ ์ํ ํ์๋ ์ค๋๋ ๊น์ง ์ด์ด์ง๋ค.
๋น์ฐํ IT ์ฐ์
์์๋ ๋น ์ง ์ ์๋ ๊ฐ๋
์ด๋ค.
๊ฐ๋ฐ์๋ก์ ๋ณด์์ด๋
๋ณด์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ, ๋น์ฆ๋์ค ๋ก์ง ๋ฑ์ ๋ณดํธํ๋ ๊ฐ๋
์ด๋ค.
์๋ฅผ ๋ค์ด ๊ตฌ๊ธ ๊ฒ์ ์์ง ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๊ฐํ๊ธธ ์์น ์์์ ์์ฒญ๋ ์์ค์ ๋ณด์ ์กฐ์น๋ฅผ ํด๋จ๋ค๊ณ ํ๋ค.
๋ณด์์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ด๋ค.
์ฌ์ฉ์๋ ์ฐ๋ฆฌ์๊ฒ ๊ฐ๋ฐํ๋ฉด์ ๋ณด์์ ์ ์ํด๋ฌ๋ผ๊ณ ๋ถํ์ ํ์ง ์๋๋ค.
์๋ํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ ์ด๊ธฐ ๋๋ฌธ์ธ๋ฐ์, ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ด๊ณ์์ด ์ฐ๋ฆฌ์๊ฒ ๊ธฐ๋ํ๋ ์ฌํญ์ด๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ ๋ณด์์ ํญ์ ๊ณ ๋ คํด์ผ ํ๋ค.
ํผํฌ๋จผ์ค ํ
์คํ
๋๋ ํ๋ก๋์
๋ฐฐํฌ ์ดํ ๋ณด์์ ๊ณ ๋ คํ๋ฉด ํ๊ท ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
์น์์ ์ฌ๋ฌ ์ข
๋ฅ์ ๋ณด์์ด ์๋ค.
SSL, ๋ฐฉํ๋ฒฝ ๋ฑ์ ์๋ฒ์์ ๊ณ ๋ คํ ๋ณด์์ด๋ค.
์ด๋ฐ ๋ณด์์ ์๋ฒ ๊ด๋ฆฌ์, devOps๊ฐ ์ฒ๋ฆฌํ ํน์ ๋ณด์ ์ฑ
์์ด๋ค.
์ฐ๋ฆฌ์ ์น ์ ํ๋ฆฌ์ผ์ด์
๋๋ ๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ๋ ์ฐ๋ฆฌ๊ฐ ๋ณดํธํด์ผํ๋ค.
XSS/CSRF ๊ณต๊ฒฉ, ์ทจ์ฝํ ์ธ์ฆ ๊ณต๊ฒฉ ๋ฑ ์ฐ์ ์์ ์์ฃผ ๋ฐ์ํ๋ ํํ ๋ณด์ ๊ณต๊ฒฉ์ด ์กด์ฌํ๋ค.
๋ชจ๋ ๊ณ ๋ คํด์ผ ๋๋ ์ฌํญ์ด๋ค.
โญ ๋ณด์์ ์ค์์ฑ
๊ทธ๋ ๋ค๋ฉด ๋ณด์์ ์ ์ค์ํ ๊น?
๋ณด์์ด ์์ผ๋ฉด ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์นจํด, ์น ์ ํ๋ฆฌ์ผ์ด์
๋ด์ ๋ณด์ ๊ณต๊ฒฉ์ด ์ผ์ด๋ ์ ์๋ค.
์ด๋ ๊ณง ๋ฐ์ดํฐ, ๋น์ฆ๋์ค ๋ก์ง ์์ค๋ก ์ด์ด์ง๊ณ ์ฌ์ฉ์๋ก๋ถํฐ ๋ธ๋๋์ ๋ํ ์ ๋ขฐ ์ด์๋ฅผ ๋ง์ฃผํ๋ค.
๋ ๋์๊ฐ ๋ฒ์ ๋ฌธ์ ๊น์ง ์๋ํ ์ ์๋ค.
๋ฐ๋ผ์ ์ค์ ์๋น์ค ์ ๋ณด์์ ํ์์ด๋ค.
์ด๋ ๋ฏ ๋ณด์์ ๋งค์ฐ ์ค์ํ๋ฏ๋ก
Spring Framework
๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํ๊ธฐ ์ํด์Spring Security
ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์ํ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋
์ง์ ๋ณด์๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
ํ์ง๋ง ๋งค์ผ ์๋ก ๋ฐ๊ฒฌ๋๋ ์ ๋ฐฑ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ์์ ๋๊ธฐํ๋ฉฐ ๋ชจ๋ ์ธ์งํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์
๋งค์ฐ ๋ง์ ์๊ณ ์ ๋ ธ๋ ฅ์ด ๋ค์ด๊ฐ๋ค.
์ง๊ธ ์ด ์๊ฐ์๋ ํด์ปค๋ค์ ๋ ๋ง์ ์ทจ์ฝ์ ์ ํ์ํ๊ณ ์๋ค.
๐ Spring Security
Spring Security๋ ๊ฐ๋ ฅํ๊ณ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ ์ธ์ฆ ๋ฐ ์ก์ธ์ค ์ ์ด ํ๋ ์์ํฌ์ ๋๋ค. Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ์ํ ํ์ค์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ(Authentification)๊ณผ ์ธ๊ฐ(Authorization)์ ์ค์ ์ ๋๊ณ ์๋ค.
HTTP ํต์ ์์ ๊ณ ๋ คํ ๋ณด์์ Request
์ด๋ค.Spring Security
๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ๋ชจ๋ Request
๋ฅผ ๊ฐ๋ก์ฑ ๊ฒ์ฆํ๋ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ
์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ์ ๋ณดํธํ๋ค.
Spring Security
์ ๋ด๋ถ ๋์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.

- Spring Security Filters: ์ผ๋ จ์ ์คํ๋ง ์ํ๋ฆฌํฐ ํํฐ๋ ๊ฐ๊ฐ์ ์์ฒญ์ ์ฐจ๋จํ๊ธฐ ์ํด ํจ๊ป ์๋ํ์ฌ ์ธ์ฆ์ด ํ์ํ์ง ์ฌ๋ถ๋ฅผ ์๋ณํ๋ค. ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๊ธฐ ์ธ์ฆ ์ ๋ก๊ทธ์ธ ํ์ด์ง ๋๋ ๊ธฐ์กด ์ธ๋ถ ์ ๋ณด ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ์ฉ์๋ฅผ ํ์ํ๋ค.
- Authentication(์ธ์ฆ): UsernamePasswordAuthenticationFilter์ ๊ฐ์ ํํฐ๋ HTTP ์์ฒญ์์ username/password๋ฅผ ์ถ์ถํ๋ค. Authentication์ ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ Spring Security ํ๋ ์์ํฌ ๋ด์ ์ ์ฅํ๋ ํต์ฌ ํ์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- AuthenticationManager(์ธ์ฆ ๊ด๋ฆฌ์): ํํฐ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์ฌ์ฉ์ ์ธ๋ถ ์ ๋ณด์ ์ ํจ์ฑ ํ์ธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ฆ ์ ๊ณต์์๊ฒ ์์ํ๋ค. ์ฑ ๋ด์ ์ฌ๋ฌ ๊ฐ์ ์ ๊ณต์๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ธ์ฆ ์ ๊ณต์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ AuthenticationManager์ ์ฑ ์์ด๋ค.
- AuthenticationProviders(์ธ์ฆ ์ ๊ณต์): AuthenticationProviders๋ ์ธ์ฆ์ ์ํด ์ฌ์ฉ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ๋ ๋ชจ๋ ํต์ฌ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ค.
- UserDetailsManager/UserDetailsService: UserDetailsManager/UserDetailsService๋ DB/์คํ ๋ฆฌ์ง ์์คํ ์์ UserDetails๋ฅผ ๊ฒ์, ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ํ๋ ๋ฐ ๋์์ด ๋๋ค.
- PasswordEncoder: ํด์ ์ํธ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ๋์์ด ๋๋ ์๋น์ค ์ธํฐํ์ด์ค์ด๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๋ฆฌ๋ ์ผ๋ฐ ํ ์คํธ ์ํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์๋ค.
- SecurityContext: ์์ฒญ์ด ์ธ์ฆ๋๋ฉด Authentication์ ๋ณดํต SecurityContextHolder์ ์ํด ๊ด๋ฆฌ๋๋ thread-local SecurityContext์ ์ ์ฅ๋๋ค. ์ด๋ ์ดํ์ ๋์ผํ ์ฌ์ฉ์์ ์์ฒญ ์ค์ ๋์์ด ๋๋ค.
Spring Security
๋ ์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๊ฒ์ฆํ๋ค.
๐ ๊ฒฐ๋ก
Spring Security
๋ ๋ชจ๋ ๋ณด์ ์๋๋ฆฌ์ค๋ฅผ ์ฐธ๊ณ ํ ์ค๋ ฅ์๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋ง๋ค์๊ณ
๊ณ์ํด์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํด ํจ์น๋ ์
๋ฐ์ดํธ๋ฅผ ํ๊ณ ์๋ค.
๊ฐ์ธ์ด ๋ณด์๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ๋ณด๋ค
Spring Security
๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ํ์ ๊ตฌ์ฑ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํ ์ ์๊ธฐ ๋๋ฌธ์
์ฑ๋ฅ๊ณผ ํจ์จ์ด ์๋์ ์ผ ๊ฒ์ด๋ค.
์ฌ์ง์ด ์คํ์์ค ํ๋ ์์ํฌ๋ผ์ ๋น์ฉ์ด ์ ๋ค์ด๊ฐ๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ Spring Security
๋ฅผ ์ฌ์ฉํด ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํจ์ผ๋ก์จ
๋น์ฆ๋์ค ๋ก์ง์ ์ข ๋ ์ง์คํ ์ ์๋ค.
๋จ, ๊ธฐ๋ณธ์ ์ธ ์ธํ
๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ์์ ๋ฐ๋ผ ์ปค์คํ
ํ๋ ๊ณผ์ ์ด ํ์ํ ์๋ ์๋ค.
ํํฐ๋ ์ธ์ฆ ๊ณผ์ ์ปค์คํ
์ ํตํด ๋ณธ์ธ ์๋น์ค์ ์ ํฉํ ๋ก๊ทธ์ธ์ ๊ตฌํํ ์ ์๋ค.
๋ค์์ Spring Security
๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ก๊ทธ์ธ ๊ตฌํํ๋ ๋ด์ฉ์ ๋ํด์ ๊ธฐ๋กํ๋ค.
๐ Reference
- https://docs.spring.io/spring-security/reference/index.html
- Udemy easybytes ๊ฐ์ฌ๋์ Spring Security 6 ๊ฐ์
๐ ๋ก๊ทธ์ธ ๊ตฌํ ๊ณผ์ ์ธ๋ฑ์ค
- ๐ [Spring Security] ๋ณด์๊ณผ Spring Security
- [Spring Security] ์์ ๋ก๊ทธ์ธ ๊ตฌํ๊ธฐ (๋ก๊ทธ์ธ์ด๋, JWT) - 1
- [Spring Security] ์์ ๋ก๊ทธ์ธ ๊ตฌํ๊ธฐ (OAuth, ๋ก๊ทธ์ธ ๊ตฌ์กฐ) - 2
๐ ๋ณด์
โญ ๋ณด์์ด๋?
๋ณด์์ ์ธ๋ฅ ์ญ์ฌ์ ๋ฌธ๋ช
์์ ๋นผ๋์ ์ ์๋ ์ค์ํ ๊ฐ๋
์ด๋ค.
์๊ธฐ์๋๋ถํฐ ๋, ๊ธ ๊ฐ์ด ์ค์ํ ์์ฐ์ ์งํค๊ธฐ ์ํ ํ์๋ ์ค๋๋ ๊น์ง ์ด์ด์ง๋ค.
๋น์ฐํ IT ์ฐ์
์์๋ ๋น ์ง ์ ์๋ ๊ฐ๋
์ด๋ค.
๊ฐ๋ฐ์๋ก์ ๋ณด์์ด๋
๋ณด์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ, ๋น์ฆ๋์ค ๋ก์ง ๋ฑ์ ๋ณดํธํ๋ ๊ฐ๋
์ด๋ค.
์๋ฅผ ๋ค์ด ๊ตฌ๊ธ ๊ฒ์ ์์ง ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๊ฐํ๊ธธ ์์น ์์์ ์์ฒญ๋ ์์ค์ ๋ณด์ ์กฐ์น๋ฅผ ํด๋จ๋ค๊ณ ํ๋ค.
๋ณด์์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ด๋ค.
์ฌ์ฉ์๋ ์ฐ๋ฆฌ์๊ฒ ๊ฐ๋ฐํ๋ฉด์ ๋ณด์์ ์ ์ํด๋ฌ๋ผ๊ณ ๋ถํ์ ํ์ง ์๋๋ค.
์๋ํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ ์ด๊ธฐ ๋๋ฌธ์ธ๋ฐ์, ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ด๊ณ์์ด ์ฐ๋ฆฌ์๊ฒ ๊ธฐ๋ํ๋ ์ฌํญ์ด๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ ๋ณด์์ ํญ์ ๊ณ ๋ คํด์ผ ํ๋ค.
ํผํฌ๋จผ์ค ํ
์คํ
๋๋ ํ๋ก๋์
๋ฐฐํฌ ์ดํ ๋ณด์์ ๊ณ ๋ คํ๋ฉด ํ๊ท ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
์น์์ ์ฌ๋ฌ ์ข
๋ฅ์ ๋ณด์์ด ์๋ค.
SSL, ๋ฐฉํ๋ฒฝ ๋ฑ์ ์๋ฒ์์ ๊ณ ๋ คํ ๋ณด์์ด๋ค.
์ด๋ฐ ๋ณด์์ ์๋ฒ ๊ด๋ฆฌ์, devOps๊ฐ ์ฒ๋ฆฌํ ํน์ ๋ณด์ ์ฑ
์์ด๋ค.
์ฐ๋ฆฌ์ ์น ์ ํ๋ฆฌ์ผ์ด์
๋๋ ๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ๋ ์ฐ๋ฆฌ๊ฐ ๋ณดํธํด์ผํ๋ค.
XSS/CSRF ๊ณต๊ฒฉ, ์ทจ์ฝํ ์ธ์ฆ ๊ณต๊ฒฉ ๋ฑ ์ฐ์ ์์ ์์ฃผ ๋ฐ์ํ๋ ํํ ๋ณด์ ๊ณต๊ฒฉ์ด ์กด์ฌํ๋ค.
๋ชจ๋ ๊ณ ๋ คํด์ผ ๋๋ ์ฌํญ์ด๋ค.
โญ ๋ณด์์ ์ค์์ฑ
๊ทธ๋ ๋ค๋ฉด ๋ณด์์ ์ ์ค์ํ ๊น?
๋ณด์์ด ์์ผ๋ฉด ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์นจํด, ์น ์ ํ๋ฆฌ์ผ์ด์
๋ด์ ๋ณด์ ๊ณต๊ฒฉ์ด ์ผ์ด๋ ์ ์๋ค.
์ด๋ ๊ณง ๋ฐ์ดํฐ, ๋น์ฆ๋์ค ๋ก์ง ์์ค๋ก ์ด์ด์ง๊ณ ์ฌ์ฉ์๋ก๋ถํฐ ๋ธ๋๋์ ๋ํ ์ ๋ขฐ ์ด์๋ฅผ ๋ง์ฃผํ๋ค.
๋ ๋์๊ฐ ๋ฒ์ ๋ฌธ์ ๊น์ง ์๋ํ ์ ์๋ค.
๋ฐ๋ผ์ ์ค์ ์๋น์ค ์ ๋ณด์์ ํ์์ด๋ค.
์ด๋ ๋ฏ ๋ณด์์ ๋งค์ฐ ์ค์ํ๋ฏ๋ก
Spring Framework
๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํ๊ธฐ ์ํด์Spring Security
ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์ํ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋
์ง์ ๋ณด์๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
ํ์ง๋ง ๋งค์ผ ์๋ก ๋ฐ๊ฒฌ๋๋ ์ ๋ฐฑ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ์์ ๋๊ธฐํ๋ฉฐ ๋ชจ๋ ์ธ์งํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์
๋งค์ฐ ๋ง์ ์๊ณ ์ ๋ ธ๋ ฅ์ด ๋ค์ด๊ฐ๋ค.
์ง๊ธ ์ด ์๊ฐ์๋ ํด์ปค๋ค์ ๋ ๋ง์ ์ทจ์ฝ์ ์ ํ์ํ๊ณ ์๋ค.
๐ Spring Security
Spring Security๋ ๊ฐ๋ ฅํ๊ณ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ ์ธ์ฆ ๋ฐ ์ก์ธ์ค ์ ์ด ํ๋ ์์ํฌ์ ๋๋ค. Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ์ํ ํ์ค์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ(Authentification)๊ณผ ์ธ๊ฐ(Authorization)์ ์ค์ ์ ๋๊ณ ์๋ค.
HTTP ํต์ ์์ ๊ณ ๋ คํ ๋ณด์์ Request
์ด๋ค.Spring Security
๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ๋ชจ๋ Request
๋ฅผ ๊ฐ๋ก์ฑ ๊ฒ์ฆํ๋ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ
์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ์ ๋ณดํธํ๋ค.
Spring Security
์ ๋ด๋ถ ๋์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.

- Spring Security Filters: ์ผ๋ จ์ ์คํ๋ง ์ํ๋ฆฌํฐ ํํฐ๋ ๊ฐ๊ฐ์ ์์ฒญ์ ์ฐจ๋จํ๊ธฐ ์ํด ํจ๊ป ์๋ํ์ฌ ์ธ์ฆ์ด ํ์ํ์ง ์ฌ๋ถ๋ฅผ ์๋ณํ๋ค. ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๊ธฐ ์ธ์ฆ ์ ๋ก๊ทธ์ธ ํ์ด์ง ๋๋ ๊ธฐ์กด ์ธ๋ถ ์ ๋ณด ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ์ฉ์๋ฅผ ํ์ํ๋ค.
- Authentication(์ธ์ฆ): UsernamePasswordAuthenticationFilter์ ๊ฐ์ ํํฐ๋ HTTP ์์ฒญ์์ username/password๋ฅผ ์ถ์ถํ๋ค. Authentication์ ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ Spring Security ํ๋ ์์ํฌ ๋ด์ ์ ์ฅํ๋ ํต์ฌ ํ์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- AuthenticationManager(์ธ์ฆ ๊ด๋ฆฌ์): ํํฐ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์ฌ์ฉ์ ์ธ๋ถ ์ ๋ณด์ ์ ํจ์ฑ ํ์ธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ฆ ์ ๊ณต์์๊ฒ ์์ํ๋ค. ์ฑ ๋ด์ ์ฌ๋ฌ ๊ฐ์ ์ ๊ณต์๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ธ์ฆ ์ ๊ณต์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ AuthenticationManager์ ์ฑ ์์ด๋ค.
- AuthenticationProviders(์ธ์ฆ ์ ๊ณต์): AuthenticationProviders๋ ์ธ์ฆ์ ์ํด ์ฌ์ฉ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ๋ ๋ชจ๋ ํต์ฌ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ค.
- UserDetailsManager/UserDetailsService: UserDetailsManager/UserDetailsService๋ DB/์คํ ๋ฆฌ์ง ์์คํ ์์ UserDetails๋ฅผ ๊ฒ์, ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ํ๋ ๋ฐ ๋์์ด ๋๋ค.
- PasswordEncoder: ํด์ ์ํธ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ๋์์ด ๋๋ ์๋น์ค ์ธํฐํ์ด์ค์ด๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๋ฆฌ๋ ์ผ๋ฐ ํ ์คํธ ์ํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์๋ค.
- SecurityContext: ์์ฒญ์ด ์ธ์ฆ๋๋ฉด Authentication์ ๋ณดํต SecurityContextHolder์ ์ํด ๊ด๋ฆฌ๋๋ thread-local SecurityContext์ ์ ์ฅ๋๋ค. ์ด๋ ์ดํ์ ๋์ผํ ์ฌ์ฉ์์ ์์ฒญ ์ค์ ๋์์ด ๋๋ค.
Spring Security
๋ ์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๊ฒ์ฆํ๋ค.
๐ ๊ฒฐ๋ก
Spring Security
๋ ๋ชจ๋ ๋ณด์ ์๋๋ฆฌ์ค๋ฅผ ์ฐธ๊ณ ํ ์ค๋ ฅ์๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋ง๋ค์๊ณ
๊ณ์ํด์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํด ํจ์น๋ ์
๋ฐ์ดํธ๋ฅผ ํ๊ณ ์๋ค.
๊ฐ์ธ์ด ๋ณด์๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ๋ณด๋ค
Spring Security
๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ํ์ ๊ตฌ์ฑ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํ ์ ์๊ธฐ ๋๋ฌธ์
์ฑ๋ฅ๊ณผ ํจ์จ์ด ์๋์ ์ผ ๊ฒ์ด๋ค.
์ฌ์ง์ด ์คํ์์ค ํ๋ ์์ํฌ๋ผ์ ๋น์ฉ์ด ์ ๋ค์ด๊ฐ๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ Spring Security
๋ฅผ ์ฌ์ฉํด ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํจ์ผ๋ก์จ
๋น์ฆ๋์ค ๋ก์ง์ ์ข ๋ ์ง์คํ ์ ์๋ค.
๋จ, ๊ธฐ๋ณธ์ ์ธ ์ธํ
๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ์์ ๋ฐ๋ผ ์ปค์คํ
ํ๋ ๊ณผ์ ์ด ํ์ํ ์๋ ์๋ค.
ํํฐ๋ ์ธ์ฆ ๊ณผ์ ์ปค์คํ
์ ํตํด ๋ณธ์ธ ์๋น์ค์ ์ ํฉํ ๋ก๊ทธ์ธ์ ๊ตฌํํ ์ ์๋ค.
๋ค์์ Spring Security
๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ก๊ทธ์ธ ๊ตฌํํ๋ ๋ด์ฉ์ ๋ํด์ ๊ธฐ๋กํ๋ค.
๐ Reference
- https://docs.spring.io/spring-security/reference/index.html
- Udemy easybytes ๊ฐ์ฌ๋์ Spring Security 6 ๊ฐ์
๐ ๋ก๊ทธ์ธ ๊ตฌํ ๊ณผ์ ์ธ๋ฑ์ค
- ๐ [Spring Security] ๋ณด์๊ณผ Spring Security
- [Spring Security] ์์ ๋ก๊ทธ์ธ ๊ตฌํ๊ธฐ (๋ก๊ทธ์ธ์ด๋, JWT) - 1
- [Spring Security] ์์ ๋ก๊ทธ์ธ ๊ตฌํ๊ธฐ (OAuth, ๋ก๊ทธ์ธ ๊ตฌ์กฐ) - 2