의미없는 블로그

[Java] AOP 로 권한 체크 본문

# 나/source Code

[Java] AOP 로 권한 체크

SaltLee 2026. 2. 20. 11:05
클라이언트 > 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
Comments