Skip to content

Call without Host header throws uncaught error #45204

@lassi-kojo

Description

@lassi-kojo

Before reporting an issue

  • I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

Area

core

Describe the bug

After upgrading Keycloak from 26.3.4 to 26.4.7, I started to see the following errors in the log:

Jan 07 11:47:52 keycloak1 keycloak[234996]: 2026-01-07 09:47:52,920 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (executor-thread-11) Uncaught server error: java.lang.RuntimeException: java.net.URISyntaxException: Expected authority at index 8: https://
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.server.jaxrs.LocationUtil.getUri(LocationUtil.java:34)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.server.jaxrs.UriInfoImpl.getBaseUri(UriInfoImpl.java:124)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.server.jaxrs.UriInfoImpl.getBaseUriBuilder(UriInfoImpl.java:129)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.url.HostnameV2Provider.getFrontUriBuilder(HostnameV2Provider.java:99)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.url.HostnameV2Provider.getUri(HostnameV2Provider.java:73)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.url.HostnameV2Provider.getScheme(HostnameV2Provider.java:134)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.models.KeycloakUriInfo.<init>(KeycloakUriInfo.java:51)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.services.DefaultKeycloakContext.getUri(DefaultKeycloakContext.java:93)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.services.DefaultKeycloakContext.getUri(DefaultKeycloakContext.java:100)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.services.resources.WelcomeResource.getWelcomePage(WelcomeResource.java:88)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.keycloak.services.resources.WelcomeResource$quarkusrestinvoker$getWelcomePage_88e9d8d2443c979657fafa960095f3dcca00c556.invoke(Unknown Source)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:183)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:645)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.lang.Thread.run(Thread.java:1583)
Jan 07 11:47:52 keycloak1 keycloak[234996]: Caused by: java.net.URISyntaxException: Expected authority at index 8: https://
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.net.URI$Parser.fail(URI.java:2995)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.net.URI$Parser.failExpecting(URI.java:3001)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3245)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.net.URI$Parser.parse(URI.java:3196)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at java.base/java.net.URI.<init>(URI.java:807)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         at org.jboss.resteasy.reactive.server.jaxrs.LocationUtil.getUri(LocationUtil.java:32)
Jan 07 11:47:52 keycloak1 keycloak[234996]:         ... 22 more

I traced the root cause to be a call to Keycloak without Host header.

I know that Host header should be configured, but calls without it shouldn't flood the logs with this information.

Version

26.4.7

Regression

  • The issue is a regression

Expected behavior

Nothing should be returned to the client and no logs should be produced.

Actual behavior

The client gets a response:
{"error":"unknown_error","error_description":"For more on this error consult the server log."}

And uncaught error is written into server log.

How to Reproduce?

Works as expected:

curl https://keycloak1.my.tld

Triggers the issue described:

curl -H "Host:" https://keycloak1.my.tld
{"error":"unknown_error","error_description":"For more on this error consult the server log."}

Anything else?

No response

Metadata

Metadata

Assignees

Type

No fields configured for bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions