티스토리 뷰
[Thymeleaf] thymeleaf-extras-security 최신 버전 사용 주의
ryumodern 2022. 3. 12. 20:25개인 프로젝트에서 템플릿 엔진으로 thymeleaf를 선택해 사용 중이다
spring-security와 엮어서 사용할 필요가 있었고
thymeleaf-extras-springsecurity 라이브러리를 추가하면 간단하게 사용 가능하다
다만 최신 릴리즈인 3.0.4.RELEASE는 2018년 10월에 나왔기에 나온지 좀 됐고 그 때문에 보안 취약점들이 몇개 걸린 상태다
2022년 1월에 따끈따끈한 보안 패치 버전이 나왔으나 정식 버전이 아닌 Milestone 버전이다
모험가 정신이 투철한 나는 참을 수 없이 M1 버전을 라이브러리에 넣고 돌렸더니
굉장히 장황한 NoSuchMethodError가 뜨는 것이 아닌가
내 눈을 믿을 수 없어 서버 재시동 후 몇번 더 시도했지만 같은 에러를 뿜었다
마음을 가다듬고 스택 트레이스를 읽어보니 IWebContext에서 getExchange()를 호출할 때 발생하는 문제임을 파악했다
java.lang.NoSuchMethodError:
org.thymeleaf.context.IWebContext.getExchange()Lorg/thymeleaf/web/IWebExchange
thymeleaf가 사용하는 IWebContext에 들어가봤더니 getExchange()가 없네??
thymeleaf는 spring-boot-starter로 땡겨왔고 extras-springsecurity5는 M1 버전을 넣었기 때문에 발생한 문제다
4년 만에 최신 버전이 나온 거니 보안 패치 뿐만 아니라 인터페이스에도 추가된 요소들이 좀 있나보다
해결법은 간단하다
1. thymeleaf 땡겨올 때 직접 최신 버전인 M1을 넣어준다
2. 보안 취약점을 떠안고 이전 버전의 extras-security5를 쓰면 된다
난 배포할 프로젝트가 아니라 이전 버전을 택했는데 실무에서 쓴다면 곧 나올 정식 버전을 기다리면 되지 않을까?