헤르메스 LIFE

java.lang.IllegalArgumentException: An invalid domain [.xxxxx.com] was specified for this cookie 본문

Exception

java.lang.IllegalArgumentException: An invalid domain [.xxxxx.com] was specified for this cookie

헤르메스의날개 2021. 1. 14. 15:19
728x90

SSO 에 접속 환경을 개발하던 중 아래와 같은 오류가 발생하였습니다.

java.lang.IllegalArgumentException: An invalid domain [.xxxxx.com] was specified for this cookie

Tomcat 8.x 버전에서 발생하는 문제라고 합니다.


해결방법

tomcat's conf/context.xml 파일에 아래의 코드를 추가합니다.

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

	<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" /> 
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
</Context>

Spring Boot 라면 아래의 코드를 추가합니다.

@Bean
public EmbeddedServletContainerCustomizer tomcatCustomizer() {
    return container -> {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addContextCustomizers(context -> context.setCookieProcessor(new LegacyCookieProcessor()));
        }
    };
}

 

쿠키 셋팅 소스에서의 주의점.

Tomcat 8.5 이후버젼에서는 "." 을 제거해야 합니다.

 

ck.setDomain("xxx.com")

 

Tomcat 8.5 이후버젼에서는 "." 을 넣어줘야 합니다.

 

ck.setDomain(".xxx.com")

 

참고 : jistol.github.io/java/2017/08/30/tomcat8-invalid-domain/

참고 : programmer.group/an-invalid-domain-xxx.com-was-specified-for-this-cookie-exception-resolution.html

728x90