@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
@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를 사용하는 것이 더 적합하다는 결론이였습니다.
'개발관련' 카테고리의 다른 글
MSA 기반 물류관리 및 배송시스템 프로젝트를 마치며... (0) | 2024.09.24 |
---|---|
Gateway 에 관하여 내가 프로젝트를 진행하면서 해야할것 (2) | 2024.09.13 |
DDD란? (1) | 2024.09.06 |
JPA) JPA Auditing 사용하기 (1) | 2024.09.05 |
[Spring Security] canAccessUser 메서드 (0) | 2024.09.04 |