의미없는 블로그
[Java] AOP 로 권한 체크 본문
| 클라이언트 > Filter > Interceptor > AOP > Controller |
AOP 가 Aspect 뭐시기 인데
보통 메서드 실행 전, 후로 동작을 제어할 수 있어서
메서드 실행 전에 권한 체크 하는거나
실행 후에 로깅 하는거나
그런데에 쓰임
AOP 구현된곳 찾고 싶으면
@Aspect 가 설정된 파일을 찾으면 되고

보통 아래 기능들과 같이 쓰인다
@Before 메서드 실행 전
@After 메서드 실행 후
@Around 메서드 실행 전후 모두

- Before 이니까 메서드 실행 전에 동작할거임
- ApiAuth 라는 어노테이션으로 제어할거임 (@ApiAuth 붙은 메서드 실행 전에 동작)
- target 은 ApiAuth 어노테이션 정보
- joinPoint 는 탈취한 메서드

- @ApiAuth 붙었으니까 /jobs/{jobId} 실행 하기전에 먼저 AOP 가 체크할거임
- 요 부분에서 사용하는 권한은 CredetInfoNotice 이겠네

- target 이 ApiAuth 어노테이션 정보였자나 걔가 가진 grantCode 값을 roleList 에 담아 (CreditInfoNotice 요거겠지)
- manager 는 현재 세션에서 가져온 토큰 값임
- 현재 세션의 토큰 값이 roleList 에 포함되어 있는지(일치 하는지)를 봐
- 포함되어 있지 않으면 PermissionDenied 로 Throw 던진다
걍 대충 이런 플로우고
어쨌든 중요한건 AOP 가 보통 권한 제어에 사용된다는거
요런 형태로 권한 제어 한다는거
이렇게 구현되어 있으면
해당 엔드포인트는
권한 있는 사용자만 접근 사용할 수 있는거
근데 아까 /jobs/{jobId} 에서
남이 생성한 jobId 를 볼 수 없게 해야한다고 하면
요기서 한번 더 개인별로 권한 검증이 필요하긴 하겠지
근데 걍 동일한 권한을 가진 사용자면
니가 생성하든 내가 생성하든
다 볼 수 있고 지울수도 있고
걍 그렇게 서비스를 구현한거면
상관없겠지 (관리자 서비스 특징)
'# 나 > source Code' 카테고리의 다른 글
| [Fortify] Cross-Site Scripting: DOM (2) | 2025.03.12 |
|---|---|
| [Fortify] Insecure Transport (0) | 2025.03.12 |
| Fortify 탐지 패턴 (Path Manipulation) (0) | 2024.12.24 |
| [XSS] Content-Disposition: attachment (0) | 2024.12.23 |
| [ASP.NET.C#] Stored XSS 취약점 (0) | 2024.05.24 |
