Back-End μž‘μ—…μ‹€/Spring Framework

[Spring] Spring Security - Method Security

μ£Όλ‹ˆμ“°πŸ§‘‍πŸ’» 2022. 3. 30. 08:00
728x90
λ°˜μ‘ν˜•

 

πŸš€ 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`μΆ”κ°€

 

 

 

 

 

 

 

 

 

728x90
λ°˜μ‘ν˜•