AXBoot-WildFly 9을 사용할 때의 JWTSessionHandler 문제
com.chequer.axboot.admin.utils.JWTSessionHandler
는 javax.xml.bind.DatatypeConverter
클래스를 이용하여 BASE64 인코딩/디코딩을 수행합니다.
그런데 WildFly 9 버전의 경우에는 문제가 있습니다. WildFly 9은 JDK의 DatatypeConverter
를 사용하는게 아니라 별도의 내장된 버전을 사용하기 때문입니다.
좀 더 정확하게는 wildfly-9.0.2.Final/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.2_spec-1.0.4.Final.jar
파일에 포함된 것을 사용합니다.
이 버전은 URL-safe 하지 않은 인코딩을 수행하기 때문에 쿠키를 이용한 로그인이 불가능한 심각한 문제가 발생합니다.
아래와 같이 Apache Commons Codec 프로젝트의 Base64 클래스를 사용하도록 수정하면 문제가 해결됩니다.
import org.apache.commons.codec.binary.Base64;
private String toBase64(byte[] content) {
return Base64.encodeBase64URLSafeString(content);
}
private byte[] fromBase64(String content) {
return Base64.decodeBase64(content);
}
DatatypeConverter
를 써야하는 특별한 이유가 없다면 원본 소스도 이렇게 변경하는게 좋을 것 같습니다. 어차피 Commons Codec 프로젝트에는 이미 디펜던시가 있으니까요.
EOF
'Java' 카테고리의 다른 글
Spring Cloud Starter Stream Source JDBC에 포함된 JDBC 드라이버 (0) | 2020.01.30 |
---|---|
AXBoot를 IntelliJ IDEA에서 처음 사용할 때 유의할 점 (0) | 2018.03.24 |
AXBoot Framework - war 파일 형태로 실행 (0) | 2017.10.14 |
WildFly (JBoss)가 자동 적용하는 라이브러리 배제 방법 (0) | 2017.08.07 |
Spring Boot : auto-configuration 그리고 debug (0) | 2015.04.17 |