⚙️ 개발환경
spring boot 3.3.3, java 17
📍 Spring Security JSP 태그 라이브러리 변화
Spring Boot 3.x에서 Spring Security 6.x로 업그레이드하면서, JSP 태그 라이브러리의 일부 속성이 변경되었습니다.
특히, ifAnyGranted, ifAllGranted, ifNotGranted 와 같은 속성이 deprecated 되었고,
대신 access 속성을 사용하여 SpEL(스프링 표현 언어) 표현식을 작성해야 합니다.
기존 코드에서 ifNotGranted, ifAnyGranted를 사용하는 방식은 다음과 같습니다
<sec:authorize ifNotGranted="ROLE_MANAGER">
</sec:authorize>
이 코드는 'ROLE_MANAGER' 권한이 없는 사용자에게만 내용을 표시합니다.
<sec:authorize ifAnyGranted="ROLE_SYSTEM_ADMIN, ROLE_CUSTOMER">
</sec:authorize>
이 코드는 사용자가 'ROLE_SYSTEM_ADMIN' 또는 'ROLE_CUSTOMER' 중 하나라도 가지고 있을 경우 콘텐츠를 표시합니다.
업데이트된 코드는 다음과 같습니다.
<sec:authorize access="!hasAuthority('ROLE_MANAGER')">
</sec:authorize>
<sec:authorize access="hasAnyAuthority('ROLE_SYSTEM_ADMIN', 'ROLE_CUSTOMER')">
</sec>
여기서 access 속성은 SpEL 표현식을 사용하여 권한을 검사합니다.
hasAuthority() 메서드는 지정된 권한이 있는 경우 true를 반환합니다.
* 위 코드는 사용자가 ‘ROLE_MANAGER’ 권한을 가지고 있지 않을 때 true를 반환합니다.
hasAnyAuthority 메서드는 지정된 권한 중 하나라도 있는지를 확인합니다.
🧚 의존성 추가
Spring Security JSP 태그를 사용하기 위해서는 다음 의존성을 추가해야 합니다. (Gradle 기준)
implementation 'org.springframework.security:spring-security-taglibs'
🔨 결론
Spring Boot 3.3.3와 Java 17을 사용하는 경우, Spring Security의 최신 기능을 활용하여 애플리케이션 보안을 강화할 수 있습니다. JSP에서의 권한 검사를 보다 유연하게 처리할 수 있는 방법으로, SpEL을 활용한 <sec:authorize> 태그 사용법을 익히는 것이 중요합니다. 이러한 변화를 통해 더 안전하고 효율적인 웹 애플리케이션을 개발할 수 있습니다.
이 글이 Spring Boot 3.x 환경에서의 Spring Security 사용에 도움이 되길 바랍니다!
'dev' 카테고리의 다른 글
외부 톰캣 war 배포 (0) | 2025.03.15 |
---|---|
Spring Boot ) 외장 톰캣 Spring 로고 로그가 안 뜰 때 (0) | 2025.01.30 |
[ 빌드 도구 변경 ] maven -> gradle (0) | 2024.12.08 |
ERR_TOO_MANY_REDIRECTS (0) | 2024.12.01 |
spring-boot-gradle-plugin:3.1.1 에러 (0) | 2024.11.10 |