728x90
- 메서드 보안은 AOP 를 기반으로 구축되었기 때문에 어노테이션이 아닌 패턴 형태로 권한 규칙을 선언 가능
→ 요청 수준의 인가와 유사한 방식 - 자체 어드바이저(Advisor)를 발행하거나 포인트컷(PointCut)을 사용하여 AOP 표현식을 애플리케이션의 인가 규칙에 맞게 매칭할 수 있으며 이를 통해 어노테이션을 사용하지 않고도 메소드 수준에서 보안 정책을 구현 가능
- AspectJExpressionPointcut을 사용하기 위해서는 spring-boot-start-aop 의존성 추가 필요
빈 정의하기 - 단일 포인터컷

- *execution(io.security.MyService.user(..))
- execution = 실행
- * = 반환값 ( * = 반환타입 관계없음)
- io.security.MyService.user = io.security 패키지 안에 MyServcie 클래스의 user메서드를 호출할 때 권한 규칙 발동
- 스프링이 초기화되면서 MyService에 있는 user를 찾아가서 Advice(MethodInterceptor)를 등록하고 MyService는 Proxy 객체로 생성
→ 어노테이션에 의해서가 아니라 pattern.setExpression()에 의해 생성
빈 정의하기 - 다중 포인터컷

- 여러 개에 포인트 컷을 설정하여 MyService의 user와 display에 권한 규칙 설정
- ComposablePointcut을 사용하여 pointcut을 등록
- 표현식을 execution( io.security.Service.*(..)) 설정하면 모든 메서드에 AOP 인터셉터가 등록
728x90
'Language > Spring Security' 카테고리의 다른 글
| 인증 이벤트 - Authentication Events (0) | 2024.08.02 |
|---|---|
| AOP 메서드 보안 구현 - MethodInterceptor, Pointcut, Advisor (0) | 2024.08.02 |
| 메서드 기반 Custom AuthorizationManager 구현 (0) | 2024.08.02 |
| 메서드 기반 인가 관리자 - PreAuthorizeAuthorizationManager 외 클래스 구조 이해 (0) | 2024.08.01 |
| 인가 설정 응용 - RequestMatcherDelegatingAuthorizationManager (0) | 2024.08.01 |