์ธํ๋ฐ ์ฝ์ด-์คํ๋ง-์ํ๋ฆฌํฐ ์์
์ ๋ณด๊ณ ์์๋๋ก ์งํํด๋ด.
๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณต๋ถํ ๊ฐ ์ฑํฐ๋ณ๋ก ๋๋ ์ ธ์๋ค.
์ต๋ํ ์ฃผ์๋ฑ์ ์ด์ฉํด์ ๊ฐ ์ฝ๋๋ณ ์ค๋ช
์ถ๊ฐํ์.
์ฑ
์ด์ธ์๋ ์ธ๋งํ๊ฒ ์์ผ๋ฉด ์ถ๊ฐ ์์ .
- AccessDecisionManager
- ์ธ์ฆ์ ๋ณด, ์์ฒญ์ ๋ณด, ๊ถํ์ ๋ณด๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๋ฅผ ์ง์์ ๊ทผํ์ฉํ ๊ฒ์ธ์ง ์๋์ง ์ต์ข ๊ฒฐ์ ํ๋ ์ฃผ์ฒด.
- ์ฌ๋ฌ๊ฐ์ Voter ๋ค์ ๊ฐ์ง์์๊ณ ํ์ฉ, ๊ฑฐ๋ถ, ๋ณด๋ฅ๋ฑ์ ํด๋นํ๋ ๋ฆฌํด๋ฐ๊ณ ํ๋จ ๋ฐ ๊ฒฐ์
- ์ ๊ทผ๊ฒฐ์ ์ ๋ํ 3๊ฐ์ง ์ ํ
- AffirmativeBased - ํ๋๋ผ๋ ํ์ฉํ ๊ฒฝ์ฐ ํจ์ค
- ConsensusBased - ๋ค์๊ฐ ํ์ฉํ ๊ฒฝ์ฐ ํจ์ค
- UnanimousBased - ๋ชจ๋๊ฐ ํ์ฉํ ๊ฒฝ์ฐ ํจ์ค
- AccessDecisionVoter
- ํ๋จ์ ์ฌ์ฌํ๋๊ฒ
- ๊ถํ๋ถ์ฌ์์ ํ๋จํ๋ ์๋ฃ๋ ์์์ ๋งํ ์ธ์ฆ์ ๋ณด, ์์ฒญ์ ๋ณด, ๊ถํ์ ๋ณด์ด๋ค.
- ๊ฒฐ์ ๋ฐฉ์์ 3๊ฐ์ง - ์ ๊ทผํ์ฉ(1), ์ ๊ทผ๊ธ์ง(-1), ์ ๊ทผ๋ณด๋ฅ(0)
mapstruct ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธ๊ฒธ ์ด๊ณณ์ ์ด์ฉ๋ค๋ณด๋ ๋ฃ์๋ค?
๋๋ถ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ดค๊ณ ๋ค๋ง strategy, provider ์ง์ ๊ตฌํ๊น์ง๋ ์๋ตํ์.
์ฌ์ฉ๋ ํ์ผ๋ค์ ์์น๋ com.joonseolee.springsecuritytutorial.domain ์์ ํ์ธํ ์์๋ค.
- UrlResourcesMapFactoryBean
- DB ๋ก๋ถํฐ ์ป์ ๊ถํ/์์ ์ ๋ณด๋ฅผ ResourceMap ์ ๋น์ผ๋ก ์์ฑํด์ UrlFilterInvocationSecurityMetadataSource ์ ์ ๋ฌ.
- Method ๋ฐฉ์ - ์๋
ธํ
์ด์
๊ถํ ์ค์
- @PreAuthorize, @PostAuthroize
- SpEL ์ง์
- PrePostAnnotationSecurityMetadataSource ๊ฐ ๋ด๋น
- @Secured, @RolesAllowed
- SpEL ๋ฏธ์ง์
- SecuredAnnotationSecurityMetadataSource, Jsr250MethodSecurityMetadataSource ๊ฐ ๋ด๋น
- @PreAuthorize, @PostAuthroize
- ์ธ๊ฐ์ฒ๋ฆฌ๋ฅผ ์ํ ์ด๊ธฐํ ๊ณผ์ ๊ณผ ์งํ
- ์ด๊ธฐํ ๊ณผ์
- ์ด๊ธฐํ์ ์ ์ฒด ๋น์ ๊ฒ์ฌํ์ฌ ๋ณด์์ด ์ค์ ๋ ๋ฉ์๋ ํ์
- ๋น์ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑ
- ๋ณด์ ๋ฉ์๋์ ์ธ๊ฐ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ํ๋ Advice ๋ฑ๋ก
- ๋น ์ฐธ์กฐ์ ์ค์ ๋น์ด ์๋ ํ๋ก์ ๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
- ์งํ๊ณผ์
- ๋ฉ์๋ ํธ์ถ์ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด ๋ฉ์๋๋ฅผ ํธ์ถ
- Advice ๊ฐ ๋ฑ๋ก๋์ด ์๋ค๋ฉด Advice ๋ฅผ ์๋ํ๊ฒ ํ์ฌ ์ธ๊ฐ์ฒ๋ฆฌ
- ๊ถํ ์ฌ์ฌ ํต๊ณผํ๋ฉด ์ค์ ๋น์ ๋ฉ์๋๋ฅผ ํธ์ถ!
- ์ด๊ธฐํ ๊ณผ์