๐๐ป Spring Security
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ์ ๊ณตํ๋๋ฐ ์ค์ ์ ๋ ํ๋ ์์ํฌ
- ๊ธฐ์กด ์๋ธ๋ฆฟ ํํฐ์์ ์ธ์ฆ์ฒ๋ฆฌ ํ ๊ฒ ๋ณด๋ค ๋ง์ถคํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด ์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅ
๐ Security ๊ด๋ จ ์ฉ์ด
๐ก ํํฐ Filter
- ์ฒด์ธ์ฒ๋ผ ์ฎ์ด์ ธ ์์ด ํํฐ ์ฒด์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ๋ชจ๋ ์์ฒญ์ ์ด ํํฐ ์ฒด์ธ์ ๋ฐ๋์ ๊ฑฐ์ณ์ผํจ
- Spring Security๋ ํํฐ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ Spring MVC์ ๋ถ๋ฆฌ๋์ด ๊ด๋ฆฌ ๋ฐ ๋์
๐ก ์ ๊ทผ ์ฃผ์ฒด Principal
- ๋ณดํธ๋ ๋์์ ์ ๊ทผํ๋ ์ ์
๐ก ์ธ์ฆ Authentication
- ์ฆ๋ช
- ์ ์ ๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ฒ
- ํต์ ํ์๊ฐ์ ํ๊ณ ๋ก๊ทธ์ธํ๋ ๊ฒ์ ๋งํจ
๐ก ์ธ๊ฐ Authorization
- ํ๋ฝ
- ์ ์ ์ ๋ํ ๊ถํ์ ํ์ธ ๋ฐ ํ๋ฝํ๋ ๊ฒ
๐ก ์ธ์ - ์ฟ ํค
- Spring Security๋ ์ธ์ ์ฟ ํค ๋ฐฉ์์ผ๋ก ์ธ์ฆ
(1) ์ ์ ๊ฐ ๋ก๊ทธ์ธ ์๋ : Http Request
(2) AuthenticationFilter์์ ๋ถํฐ User DB ๊น์ง ๋ค์ด๊ฐ
(3) DB์ ์๋ ์ ์ ๋ผ๋ฉด UserDetails๋ก ๊บผ๋ด์ ์ ์ ์ Session ์์ฑ
(4) Spring Security์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ธ์
์ ์ฅ๋์ธ SecurityContextHolder์ ์ ์ฅ
(5) ์ ์ ์๊ฒ session ID์ ํจ๊ป ์๋ต์ ๋ด๋ ค์ค
(6) ์ดํ ์์ฒญ์์๋ ์์ฒญ ์ฟ ํค์์ JSESSIONID๋ฅผ ๋ณด๊ณ ๊ฒ์ฆ ํ ์ ํจํ๋ฉด Authentication ๋ฐํ
๐ Spring Security ๋ด๋ถ ๊ตฌ์กฐ
๐ก SecurityContextHolder
- SecurityContext๋ฅผ ์ ๊ณตํ๋ static ๋ฉ์๋ ์ง์
๐ก SecurityContext
- ์ ๊ทผ ์ฃผ์ฒด์ ์ธ์ฆ์ ๋ํ ์ ๋ณด์ธ Authentication์ ๋ด๊ณ ์๋ Context
๐ก Authentication
- Pricipal๊ณผ GrantAuthority๋ฅผ ์ ๊ณตํจ
- ์ธ์ฆ์ด ์ด๋ฃจ์ด์ง๋ฉด ํด๋น Authentication์ด ์ ์ฅ๋จ
๐ก GrantedAuthority
- ROLEADMIN, ROLE_USER ๋ฑ ์ ๊ทผํ๋ ค๋ ์ ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ถํ์ ๋ํ๋
- prefix๋ก ROLE์ด ๋ถ์
- ์ธ์ฆ ํ ์ธ๊ฐํ ๋ ์ฌ์ฉ
- ๊ถํ์ ์ฌ๋ฌ ๊ฐ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ Collection<(GrantedAuthority)> ํํ๋ก ์ ๊ณต
๐ Spring Security ์ธ์ฆ ์ฒ๋ฆฌ ์์
โ ์์ฒญ์ด ๋ค์ด์ค๋ฉด AuthenticationFilter๋ฅผ ๊ฑฐ์นจ - UsernamePasswordAuthenticaionFilter
โก ์์ฒญ์ ๋ฐ๋ฅธ Token ์์ฑ - Authentication ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด
โข Token์ Authentication Manager์๊ฒ ์ด ํ ํฐ์ด ์ฌ๋ฐ๋ฅธ ์ ์ ์ธ์ง ๋ฌผ์ด๋ด
โฃ Authentication Manager์ 1๊ฐ ์ด์์ Authentication Provider์ ๊ฐ๊ณ ์์
Provider์ Token ๊ฐ์ฒด๋ฅผ ์ ์ ํ ํ๋จํ์ฌ ์ธ์ฆ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํจ
โค Provider์ ์ฐ๋ฆฌ๊ฐ ์ง์ ๊ตฌํํ ์๋น์ค์ธ UserDetailsService ํด๋์ค์ ํด๋น ์ ์ ์ ์ธ์ฆ์์ฒญ์ ๋ณด๋ด
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด
โฅ User Details Service ํด๋์ค๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ UserDetails๋ฅผ ๋ฐํ
โฆ Provider์ UserDetailsService์์ ๋ฐํ๋ UserDetails์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ณตํ ํ ํฐ์ ๋์กฐํ
์ด์ฉ์๊ฐ ์ ๋นํ ์ฌ์ฉ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธ → Security Context์ ์ ์ฅ
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] OAuth2 ์ธ์ฆ (0) | 2022.08.03 |
---|---|
[TIL] JWT (0) | 2022.07.29 |
[TIL] Spring Security ์ธ๊ฐ (0) | 2022.07.26 |
[TIL] Filter vs Interceptor (0) | 2022.07.25 |
[TIL] Spring Security ์ธ์ฆ (0) | 2022.07.25 |