A cloud-based identity and access management service for securing user authentication and resource access
Azure/EntraID non-compliance URI encoding for SCIM filter - invalid character quote
Hello.
EntraID user provisioning will call SCIM API.
Our app implemented SCIM API and worked well with Azure for several years. Our app is based on Wildfly application server.
we now updated Undertow library from 2.3.13 to 2.3.20 / 2.3.18. and start facing errors of
Illegal character in query at index 69: http://localhome:7070/jeny-web/api/scim/v1/Users/?filter=userName+eq+"happy"
When EntraID start provisioning it first call the SCIM with a get-user with filter request. see here the Azure side report of the error:
Uer_provision_error_cleaned.jpg
it is failing due to the quote.
initial analysis shows that until recently Undertow did not decode the %22 into " (quote). now it does. and as result, URI parsing fails since it receive an illegal quote.
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:215)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:452)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:240)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:154)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:157)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:229)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:222)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
at org.jboss.resteasy.resteasy-core@6.2.11.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at jakarta.servlet.api@6.0.0//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
at io.undertow.servlet@2.3.20.SP4-redhat-00001//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet@2.3.20.SP4-redhat-00001//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at io.undertow.websocket@2.3.20.SP4-redhat-00001//io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:172)
Caused by: java.net.URISyntaxException: Illegal character in query at index 69: http://localhome:7070/jeny-web/api/scim/v1/Users/?filter=userName+eq+"happy" at java.base/java.net.URI$Parser.fail(URI.java:2995) at java.base/java.net.URI$Parser.checkChars(URI.java:3166) at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3254) at java.base/java.net.URI$Parser.parse(URI.java:3196) at
java.base/java.net.URI.<init>(URI.java:645) at java.base/java.net.URI.create(URI.java:930) ... 159 more
how did other users of Azure, which did Undertow upgrade handled this issue?