Azure/EntraID non-compliance URI encoding for SCIM filter - invalid character quote

Zic Ben MS 0 Reputation points
2026-03-13T16:36:55.04+00:00

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?

Microsoft Security | Microsoft Entra | Microsoft Entra ID

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.