본문 바로가기
개발관련

[Spring Security] @EnableMethodSecurity와 @EnableGlobalMethodSecurity

by 수바니 2024. 9. 10.

@EnableMethodSecurity와 @EnableGlobalMethodSecurity

의 차이점이 문득 궁금해졌습니다.

 

둘다 메서드 수준의 보안처리를 활성화하는 어노테이션입니다.

하지만 Spring Security 6 이후로 명칭과 사용방식에 변화가 있습니다.

 

@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true)

Spring Security 6 이후에 사용 되는 어노테이션

이 어노테이션은 메서드 수준의 보안을 활성화하며, 특정 옵션을 설정할 수 있습니다.

 

 

securedEnabled = true:

@Secured 어노테이션을 사용하여 특정 역할이나 권한을 가진 사용자만 해당 메서드에 접근할 수 있도록 설정합니다.

 

prePostEnabled = true:

@PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter 등의 어노테이션을 사용할 수 있도록 활성화합니다.

이 어노테이션들은 메서드 실행 전후에 보안 로직을 추가하는 데 사용됩니다.

 

주요기능

@Secured 활성화

@PreAuthorize, @PostAuthorize 활성화

 

 

참고

https://java-kkwagjaba.tistory.com/24

 

[Spring Security] @Secured, @PreAuthorize, @PostAuthorize

오늘은 인가처리 Annotation에 대해서 알아볼 것 입니다.이 어노테이션을 사용한다면 복잡한 코드가 간결하고 깔끔하게 완성가능합니다. 1. SecurityConfig파일에@EnableMethodSecurity(securedEnabled = true, prePo

java-kkwagjaba.tistory.com

 

 

@EnableGlobalMethodSecurity(securedEnabled = true)

Spring Security 6 이전에 사용되던 어노테이션입니다.

 

Spring Security 6에서는 @EnableMethodSecurity로 대체되었으며, 더 이상 사용되지 않거나 사용이 권장되지 않습니다.

securedEnabled = true 옵션을 통해 @Secured 어노테이션을 활성화하여 메서드 보안을 설정할 수 있습니다. 하지만 @PreAuthorize와 같은 고급 보안 기능을 활성화하려면 별도로 prePostEnabled = true를 추가해야 했습니다.

 

 

차이점 정리

  @EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) @EnableGlobalMethodSecurity(securedEnabled = true)
Spring Security 버전 Spring Security 6.x Spring Security 5.x
유연성 더 유연하고 다양한 보안 옵션을 제공합니다. Spring Security 6 이후로는 이 어노테이션을 사용하는 것이 표준 -
기능 활성화 방식 기본적으로 최신 방식으로 다양한 메서드 보안 기능을 한꺼번에 활성화 각 기능을 개별적으로 활성화

 

따라서, Spring Security 6 이상에서는 @EnableMethodSecurity를 사용하는 것이 더 적합하다는 결론이였습니다.