<div dir="ltr">Was wondering if someone has seen configuration examples on how to setup keycloak to communicate outwards via a coprorate proxy. (Not asking about running keycloak behind a reverse proxy, that part is well documented).<div><br></div><div><br></div><div>I setup keycloak to federate with Google and everything works up to the point where google sends back the code token and Keycloak attempts to get access tokens issued via the back channel. The full stack trace is posted below but in essence keycloak fails to exchange the code for access tokens caused by a <span style="font-family:monospace,monospace">Connection timed out</span>.</div><div><br></div><div>The server which keycloak runs on has access to google&#39;s endpoints which I tested sucessfully using curl and the http_proxy environment variable.</div><div><br></div><div><a href="https://accounts.google.com/.well-known/openid-configuration">https://accounts.google.com/.well-known/openid-configuration</a><br></div><div><div><a href="https://www.googleapis.com/*">https://www.googleapis.com/*</a></div></div><div><br></div><div><br></div><div>I added &quot;-Dhttp.proxyHost=proxy.mydomain.here -Dhttp.proxyPort=8080&quot; to the JAVA_OPTS startup of the container and I can see these settings expand properly on startup. Nothing in SimpleHttp suggests these standard Java params should not work but at the same token corporate proxies have always been a royal pain in the backside to deal with.</div><div><br></div><div>Does anyone have any thoughts or suggestions on what could be amiss in my configuration?</div><div><br></div><div>Many thanks,</div><div>Niels</div><div><br></div><div><br></div><div><div><font face="monospace, monospace">2016-07-15 13:16:51,732 ERROR [org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider] (default task-23) Failed to make identity provider oauth callback: java.net.ConnectException: Connection timed out</font></div><div><font face="monospace, monospace">        at java.net.PlainSocketImpl.socketConnect(Native Method)</font></div><div><font face="monospace, monospace">        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)</font></div><div><font face="monospace, monospace">        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)</font></div><div><font face="monospace, monospace">        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)</font></div><div><font face="monospace, monospace">        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)</font></div><div><font face="monospace, monospace">        at java.net.Socket.connect(Socket.java:589)</font></div><div><font face="monospace, monospace">        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)</font></div><div><font face="monospace, monospace">        at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)</font></div><div><font face="monospace, monospace">        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)</font></div><div><font face="monospace, monospace">        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)</font></div><div><font face="monospace, monospace">        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.https.HttpsClient.&lt;init&gt;(HttpsClient.java:264)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)</font></div><div><font face="monospace, monospace">        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)</font></div><div><font face="monospace, monospace">        at org.keycloak.broker.provider.util.SimpleHttp.asString(SimpleHttp.java:141)</font></div><div><font face="monospace, monospace">        at org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider$Endpoint.authResponse(AbstractOAuth2IdentityProvider.java:228)</font></div><div><font face="monospace, monospace">        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</font></div><div><font face="monospace, monospace">        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</font></div><div><font face="monospace, monospace">        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</font></div><div><font face="monospace, monospace">        at java.lang.reflect.Method.invoke(Method.java:498)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:107)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:133)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:395)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)</font></div><div><font face="monospace, monospace">        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)</font></div><div><font face="monospace, monospace">        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)</font></div><div><font face="monospace, monospace">        at org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:88)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)</font></div><div><font face="monospace, monospace">        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)</font></div><div><font face="monospace, monospace">        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)</font></div><div><font face="monospace, monospace">        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</font></div><div><font face="monospace, monospace">        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)</font></div><div><font face="monospace, monospace">        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)</font></div><div><font face="monospace, monospace">        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)</font></div><div><font face="monospace, monospace">        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)</font></div><div><font face="monospace, monospace">        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</font></div><div><font face="monospace, monospace">        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)</font></div><div><font face="monospace, monospace">        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</font></div><div><font face="monospace, monospace">        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)</font></div><div><font face="monospace, monospace">        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)</font></div><div><font face="monospace, monospace">        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)</font></div><div><font face="monospace, monospace">        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)</font></div><div><font face="monospace, monospace">        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)</font></div><div><font face="monospace, monospace">        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)</font></div><div><font face="monospace, monospace">        at java.lang.Thread.run(Thread.java:745)</font></div></div></div>