본문 바로가기

장애&오류&예외

[Jboss-Bug]Cookie/Jsession Loss(equal)(+191220/wildfly&eap7+)

이전, 운영중이던 플랫폼에서 로그인이 되지 않던 이슈가 있었다.

이슈 사항으로 Cookie값이 누실되어 정상적인 접속이 이루어지지 않았던 내용이다.

소스상으로 아무리 찾아보아도 문제가 될만한 소지를 찾지 못했으며, WAS 상으로도 명확한 로그확인이 어려웠으나 WAS로 시선을 돌릴 수 밖에 없었다.

당시 대상 플랫폼에서 사용되었던 WAS계열은 Jboss였으며, 설정 검토 결과 전황으로 Tomcat 계열 WAS들은 default 값으로 ServerCookie.ALLOW_EQUALS_IN_VALUE false로 정의되어 있다는 것을 알게 되었다.

이 false값은 쿠기 내에 "="이 포함되어있다면, 받아오던 Cookie값의 "="에 도달하면 종료와 함께 이후 나머지 값에 대한 삭제처리를 하기에 데이터 누실로 이어진다.

따라서, Cookie 내 "=" 구문자가 내포되어 있고 이를 이용한 특정 로직이 존재한다면 데이터 비정합성이 발생될 것이다.

해당 이슈는 WAS에 true값을 적용 후에서야 해결이 되었다.

#- 설정정보 

#-해당 설정은 JVM에서 읽히기만하면 되기에 환경변수/스크립트/Conf 또는 Properties에서 정의하면 된다. 

export JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE=true"

 

#-(191220/Wildfly&eap7+)

#- JVM에 다이렉트하게 설정을 하였음에도 설정이 적용되지 않는 현상이 확인/package가 별도로 분리된 사항확인

  - protocol-listener = http-listener, https-listener, ajp-listener

jboss-eap6.4 에서 JVM 에 설정 적용 불가 현상. 상위 버전도 동일한 현상 가능.

 

/subsystem=undertow/server=default-server/ajp-listener=ajp:write-attribute(name=allow-equals-in-cookie-value,value=true)

 

#- References

(tomcat)System Properties

(jboss docs) Cookie Support

(TOAST)톰캣 버전별 쿠이이슈 내역

[wildfly_describe] undertow ajp-listener