-
Bug
-
Resolution: Done
-
Blocker
-
None
-
None
In UNDERTOW-2194 the HttpServerExchange.getRequestCookies() and HttpServerExchange.getResponseCookies() were changed to return a map, MapDelegatingToMultiValueStorage, which doesn't properly implement the Map interface. Specifically, Map.values(), Map.entrySet(), and other collection methods throw UnsupportedOperationException. Example stack trace:
14:59:56,083 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /SSOFormReAuthenticationTestCase-login-app/restricted/SecuredServlet: java.lang.UnsupportedOperationException at io.undertow.core@2.4.0.Beta1//io.undertow.server.MapDelegatingToMultiValueStorage.values(MapDelegatingToMultiValueStorage.java:92) at org.wildfly.security.elytron-web.undertow-server@4.1.2.Final//org.wildfly.elytron.web.undertow.server.ElytronHttpExchange.getCookies(ElytronHttpExchange.java:301) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.util.sso.ProgrammaticSingleSignOnCache.getCookie(ProgrammaticSingleSignOnCache.java:144) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.util.sso.ProgrammaticSingleSignOnCache.getSSOSessionId(ProgrammaticSingleSignOnCache.java:121) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.util.sso.ProgrammaticSingleSignOnCache.getSingleSignOnSession(ProgrammaticSingleSignOnCache.java:129) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.util.sso.ProgrammaticSingleSignOnCache.get(ProgrammaticSingleSignOnCache.java:64) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.HttpAuthenticator.restoreIdentity(HttpAuthenticator.java:174) at org.wildfly.security.elytron-base@2.8.3.Final//org.wildfly.security.http.HttpAuthenticator.authenticate(HttpAuthenticator.java:89) at org.wildfly.security.elytron-web.undertow-server@4.1.2.Final//org.wildfly.elytron.web.undertow.server.SecurityContextImpl.authenticate(SecurityContextImpl.java:107) at org.wildfly.security.elytron-web.undertow-server-servlet@4.1.2.Final//org.wildfly.elytron.web.undertow.server.servlet.ServletSecurityContextImpl.authenticate(ServletSecurityContextImpl.java:117) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:55) at io.undertow.core@2.4.0.Beta1//io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) at io.undertow.core@2.4.0.Beta1//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.core@2.4.0.Beta1//io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53) at io.undertow.core@2.4.0.Beta1//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:60) at io.undertow.core@2.4.0.Beta1//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at org.wildfly.security.elytron-web.undertow-server-servlet@4.1.2.Final//org.wildfly.elytron.web.undertow.server.servlet.CleanUpHandler.handleRequest(CleanUpHandler.java:38) at io.undertow.core@2.4.0.Beta1//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.ControlPointDeploymentInfoConfigurator$ControlPointRequestAttributeHandler.handleRequest(ControlPointDeploymentInfoConfigurator.java:175) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:44) at io.undertow.core@2.4.0.Beta1//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) at io.undertow.core@2.4.0.Beta1//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:271) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:130) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:127) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.ControlPointDeploymentInfoConfigurator$1.call(ControlPointDeploymentInfoConfigurator.java:100) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1427) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1427) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1427) at org.wildfly.extension.undertow@40.0.0.Beta1-SNAPSHOT//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1427) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:251) at io.undertow.servlet@1.0.0.Beta1//io.undertow.servlet.handlers.ServletInitialHandler.lambda$new$1(ServletInitialHandler.java:99) at io.undertow.core@2.4.0.Beta1//io.undertow.server.Connectors.executeRootHandler(Connectors.java:417) at io.undertow.core@2.4.0.Beta1//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:942) at org.jboss.threads@3.9.2//org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651) at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630) at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1586) at org.jboss.xnio@3.8.16.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) at java.base/java.lang.Thread.run(Thread.java:1474)
The issue is, while deprecated, this is a public API and other components rely on it as shown above. We must allow a real map to be returned and function as expected.
- blocks
-
WFLY-21503 Migrate Undertow Servlet and Undertow WebSocket to the Undertow EE
-
- Open
-
-
WFCORE-7475 Upgrade Undertow to 2.4.x
-
- Coding In Progress
-
- is caused by
-
UNDERTOW-2194 Cookie parsing/assembling does not work 100% correctly.
-
- Closed
-