본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
안녕하세요 :)
오늘은 챌린지 35일차로, 공휴일이라 아주 편안하고 꿀 같은 하루를 보내고 있네요.
오늘 배울 내용은,
Part B. 스프링 시큐리티 심화
Ch 4. 사전 및 사후 권한 부여/필터링
"01. 전역 메소드 보안 활성화" 입니다.

오늘은 전역 메소드 보안 활성화에 대해 알아보았다. 전역 메소드 보안을 알아야, 코드에서 @PreAuthorize 등의 코드와 같은 어노테이션은 어떻게 동작하는지? 메소드 레벨에서 권한 부여를 구성하는 방법은 어떻게 할수 있을지? 지금까지 abcController 에 위치하는 엔드포인트 수준에 권한 부여를 하여 관리를 했었다면 abcService, abcRepository 등에서는 어떻게 권한 부여를 할 수 있는지 이해할 수 있기 때문이다.
전역 메소드 보안으로 할 수 있는 것에는 크게 두 가지가 있다.
1. 호출 권한 부여 : 여러 이용 권리 규칙에 따라 누군가가 메소드를 호출할 수 있는지? 메소드가 실행된 후 메소드가 반환하는 것에 접근을 할 수 있는지?
2. 필터링 : 메소드가 매개 변수를 통해 받을 수 있는 것 (사전 필터링)을 결정, 메소드가 실행된 후 호출자가 메소드에서 다시 받을 수 있는 것 (사후 필터링)을 결정
기본적으로 스프링 시큐리티에서는 전역 메소드 보안이 비활성화 상태로 제공되기 때문에, 이 기능을 사용하려면 먼저 활성화를 해야 한다.
호출 권한 부여는 무엇일까? 메소드를 호출할 수 있는지를 결정하고, 메소드를 호출할 수 있도록 허용한 후 호출자가 메소드에서 반환된 값에 접근할 수 있는지를 결정하는 규칙을 의미한다.
메소드에 제공된 파라이터에 따라 접근할 수 있는지 없는지를 판단하거나 메소드의 결과에 따라 어떠한 결정을 해야 할때 이를 활용할 수 있다.
기본적으로 스프링 시큐리티에서는 전역 메소드 보안이 비활성화 상태로 제공된다. 따라서 이 기능을 사용하려면 먼저 할성화를 해야 한다.
전역 메소드 보안을 활성화하게 되면 스프링의 Aspect 가 하나 활성화 되는데, 권한 부여 규칙을 적용하는 메소드에 대한 호출을 가로채어 권한 부여 규칙을 바탕으로 가로챈 메소드로 호출을 전달할지 결정한다.
호출 권한 부여의 분류에 대해 알아보면, 크게 두 가지가 존재한다.
1. 사전 권한 부여 (PreAuthorization)
- 메소드 호출 전에 권한 부여 규칙을 검사하는 프레임워크
2. 사후 권한 부여 (PostAuthnorization
- 메소드 호출 후에 권한 부여 규칙을 검사하는 프레임워크
프로젝트에서 전역 메소드 보안 활성화를 적용하기 위해서는 @EnableMethodSecurity 어노테이션을 추가하여 활성화를 시켜주면 된다. SpringSecurity6 아래 버전에서는 @EnableGobalMethodSecurity 를 활성화 시켜주면 된다는 것을 알 수 있었다.