[Spring] Spring Security - Method Security
๐ Spring Security - Method Security
๐ฝ ๊ฐ์
`Spring Seucrity`๋ Web ๊ธฐ๋ฐ Security๋ ์์ง๋ง, `Method Security`๋ผ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ ๊ฒ์ด์์.
์ด๊ฒ์ `Service Layer`๋ฅผ ์ง์ ํธ์ถํ ๋, ์ด์ฉํ ์ ์๋ ๋ณด์ ๊ธฐ๋ฅ์ธ ๊ฒ์ด์์. Web ๊ธฐ๋ฐ์ Security๋ฅผ ์ ์ฉํ์๋๋ ์ด์ธ๋ฆฌ์ง ์๋ ๊ธฐ๋ฅ์ธ ๊ฒ์ด์์.
๋ํ, `Web Application` ์ธ์ `Desktop Application`์๋ ์ ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ด์์.
๐ฝ EnableGlobalMethodSecurity
`MethodSecurity`๋ `SecurityConfig`์ค์ ์ด ์ ์ฉ๋์ง ์๋ ๊ฒ์ด์์.
`MethodSecurity`์ฉ ์ค์ ์ด ๋ฐ๋ก ํ์ํ๋ฐ ์ด ๋ ์ด์ฉํ๋ ๊ฒ์ด `@EnableGlobalMethodSecurity`์ธ ๊ฒ์ด์์.
๐ฆ ์์ฑ๋ค
SecuredEnable | prePostEnabled | jsr250Enabled |
@Secured๋ฅผ ์ด์ฉํ์ฌ ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ Option | @PreAuthorize, @PostAuthorize๋ฅผ ์ด์ฉํ์ฌ ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ ํ๋ Option |
@RolesAllowed๋ฅผ ์ด์ฉํ์ฌ ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ ๋, ์ฌ์ฉํ๋ Option |
Default Value : false | Default Value : false | Dafault Value : false |
โบ @Secured, @RolesAllowd
โ ํน์ Method ํธ์ถ ์ด์ ์ด์ฉ์ ๊ถํ ํ์ธ
โ Spring EL ๋ฏธ์ง์
โ `@Secured`๋ `Spring`์์ ์ง์ํ๋ Annotaion์ด๋ฉฐ, `@RolesAllowed`๋ Java Standard
โบ @PreAuthorize, @PostAuthorize
โ ํน์ Method ํธ์ถ ์ , ํ ์ด์ฉ์ ๊ถํ ํ์ธ
โ Spring EL ์ง์
โ Spring์์ ์ง์ํ๋ Annotion
โ `PostAuthorize`๋ ํด๋น Method์ ๋ฐํ(Return)๊ฐ์ `returnObject`๋ก ์ฐธ์กฐํ์ฌ SpEl์ ํตํด ์ธ๊ฐ ์ฒ๋ฆฌ
โบ @PreAuthorize, @PostAuthorize
โ Web ๋ฐฉ์์์๋ Role์ ๊ณ์ธต ๊ตฌ์กฐ ์ค์ ์ ํด ์ฃผ์ง๋ง, `MethodSecurity`์์๋ ์ ์ฉ๋์ง ์์
โ `MethodSecurity`์ฉ `RoleHieachy` ์ค์ ๋ณ๋ ํ์
โ `GlobalMethodSecurityConfiguration`Class ์์ ๋ค `accessDecisionManager()` Override
ํ ๋ค `WebSecurity`์ค์ ์์ ํด์ค๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก `RoleHirearachy`์ค์ ํ๊ณ , `accessDicisionVoter`์ถ๊ฐ