I was able to get some further insight. I now configured a fresh Keycloak instance and tried to set up the Identity Provider via the admin console UI (previously, I imported it via the files). When I inserted the Discovery endpoint (https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration), the call to Keycloaks /import-config endpoint took 60 seconds and was then timed out by my load balancer.
The Keycloak logs show the already known errors:
{
"timestamp": "2024-07-09T07:01:18.284437418Z",
"sequence": 10086,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "WARN",
"message": "ARJUNA012117: TransactionReaper::check processing TX 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b in state RUN",
"threadName": "Transaction Reaper",
"threadId": 52,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.286552663Z",
"sequence": 10087,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "INFO",
"message": "ARJUNA012404: Action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b - thread executor-thread-10 at time 06:59:18.286 had stackTrace java.base/sun.nio.ch.Net.connect0(Native Method)\njava.base/sun.nio.ch.Net.connect(Net.java:589)\njava.base/sun.nio.ch.Net.connect(Net.java:578)\njava.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)\njava.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\njava.base/java.net.Socket.connect(Socket.java:751)\norg.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)\norg.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)\norg.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)\norg.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)\norg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)\norg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)\norg.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)\norg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)\norg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)\norg.keycloak.connections.httpclient.DefaultHttpClientFactory$1.getString(DefaultHttpClientFactory.java:123)\norg.keycloak.services.resources.admin.IdentityProvidersResource.importFrom(IdentityProvidersResource.java:158)\norg.keycloak.services.resources.admin.IdentityProvidersResource$quarkusrestinvoker$importFrom_a2928105606b1cfb77befafeb917cf58b5abe0c4.invoke(Unknown Source)\norg.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)\nio.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)\norg.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)\nio.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)\norg.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)\nio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\njava.base/java.lang.Thread.run(Thread.java:1583)\n",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.287201233Z",
"sequence": 10088,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "INFO",
"message": "ARJUNA012404: Action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b - thread executor-thread-10 at time 06:59:48.285 had stackTrace java.base/sun.nio.ch.Net.connect0(Native Method)\njava.base/sun.nio.ch.Net.connect(Net.java:589)\njava.base/sun.nio.ch.Net.connect(Net.java:578)\njava.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)\njava.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\njava.base/java.net.Socket.connect(Socket.java:751)\norg.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)\norg.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)\norg.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)\norg.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)\norg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)\norg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)\norg.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)\norg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)\norg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)\norg.keycloak.connections.httpclient.DefaultHttpClientFactory$1.getString(DefaultHttpClientFactory.java:123)\norg.keycloak.services.resources.admin.IdentityProvidersResource.importFrom(IdentityProvidersResource.java:158)\norg.keycloak.services.resources.admin.IdentityProvidersResource$quarkusrestinvoker$importFrom_a2928105606b1cfb77befafeb917cf58b5abe0c4.invoke(Unknown Source)\norg.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)\nio.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)\norg.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)\nio.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)\norg.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)\nio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\njava.base/java.lang.Thread.run(Thread.java:1583)\n",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.287664951Z",
"sequence": 10089,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "INFO",
"message": "ARJUNA012404: Action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b - thread executor-thread-10 at time 07:00:18.285 had stackTrace java.base/sun.nio.ch.Net.connect0(Native Method)\njava.base/sun.nio.ch.Net.connect(Net.java:589)\njava.base/sun.nio.ch.Net.connect(Net.java:578)\njava.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)\njava.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\njava.base/java.net.Socket.connect(Socket.java:751)\norg.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)\norg.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)\norg.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)\norg.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)\norg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)\norg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)\norg.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)\norg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)\norg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)\norg.keycloak.connections.httpclient.DefaultHttpClientFactory$1.getString(DefaultHttpClientFactory.java:123)\norg.keycloak.services.resources.admin.IdentityProvidersResource.importFrom(IdentityProvidersResource.java:158)\norg.keycloak.services.resources.admin.IdentityProvidersResource$quarkusrestinvoker$importFrom_a2928105606b1cfb77befafeb917cf58b5abe0c4.invoke(Unknown Source)\norg.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)\nio.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)\norg.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)\nio.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)\norg.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)\nio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\njava.base/java.lang.Thread.run(Thread.java:1583)\n",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.288084838Z",
"sequence": 10090,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "INFO",
"message": "ARJUNA012404: Action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b - thread executor-thread-10 at time 07:00:48.286 had stackTrace java.base/sun.nio.ch.Net.connect0(Native Method)\njava.base/sun.nio.ch.Net.connect(Net.java:589)\njava.base/sun.nio.ch.Net.connect(Net.java:578)\njava.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)\njava.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\njava.base/java.net.Socket.connect(Socket.java:751)\norg.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)\norg.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)\norg.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)\norg.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)\norg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)\norg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)\norg.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)\norg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)\norg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)\norg.keycloak.connections.httpclient.DefaultHttpClientFactory$1.getString(DefaultHttpClientFactory.java:123)\norg.keycloak.services.resources.admin.IdentityProvidersResource.importFrom(IdentityProvidersResource.java:158)\norg.keycloak.services.resources.admin.IdentityProvidersResource$quarkusrestinvoker$importFrom_a2928105606b1cfb77befafeb917cf58b5abe0c4.invoke(Unknown Source)\norg.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)\nio.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)\norg.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)\nio.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)\norg.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)\nio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\njava.base/java.lang.Thread.run(Thread.java:1583)\n",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.291995172Z",
"sequence": 10091,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "WARN",
"message": "ARJUNA012095: Abort of action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b invoked while multiple threads active within it.",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.292464125Z",
"sequence": 10092,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "WARN",
"message": "ARJUNA012381: Action id 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b completed with multiple threads - thread executor-thread-10 was in progress with java.base/sun.nio.ch.Net.connect0(Native Method)\njava.base/sun.nio.ch.Net.connect(Net.java:589)\njava.base/sun.nio.ch.Net.connect(Net.java:578)\njava.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)\njava.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\njava.base/java.net.Socket.connect(Socket.java:751)\norg.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)\norg.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)\norg.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)\norg.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)\norg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)\norg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)\norg.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)\norg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)\norg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)\norg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)\norg.keycloak.connections.httpclient.DefaultHttpClientFactory$1.getString(DefaultHttpClientFactory.java:123)\norg.keycloak.services.resources.admin.IdentityProvidersResource.importFrom(IdentityProvidersResource.java:158)\norg.keycloak.services.resources.admin.IdentityProvidersResource$quarkusrestinvoker$importFrom_a2928105606b1cfb77befafeb917cf58b5abe0c4.invoke(Unknown Source)\norg.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)\nio.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)\norg.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)\nio.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)\norg.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)\nio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\njava.base/java.lang.Thread.run(Thread.java:1583)\n",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.292726433Z",
"sequence": 10093,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "WARN",
"message": "ARJUNA012108: CheckedAction::check - atomic action 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b aborting with 1 threads active!",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
{
"timestamp": "2024-07-09T07:01:18.292932536Z",
"sequence": 10094,
"loggerClassName": "com.arjuna.ats.arjuna.logging.arjunaI18NLogger_$logger",
"loggerName": "com.arjuna.ats.arjuna",
"level": "WARN",
"message": "ARJUNA012121: TransactionReaper::doCancellations worker Thread[#53,Transaction Reaper Worker 0,5,main] successfully canceled TX 2a05d0140403ff02:-3b46ffffffffffff:8ac5:668cddc2:13b",
"threadName": "Transaction Reaper Worker 0",
"threadId": 53,
"mdc": {},
"ndc": "",
"hostName": "dev-keycloak-5dfb95b46c-b6m25",
"processName": "QuarkusEntryPoint",
"processId": 1
}
I tried to use the Google OIDC Well-Known-Endpoint (https://accounts.google.com/.well-known/openid-configuration) and observed the same behaviour, except for the logs (none appeared).
I furthermore set up a custom Keycloak image that has wget installed, used kubectl exec to get into the Keycloak pod and tested the connectivity for Entra ID - worked correctly.
bash-5.1$ wget -O - https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
--2024-07-09 07:45:46-- https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
Resolving login.microsoftonline.com (login.microsoftonline.com)... 2603:1027:1:d8::5, 2603:1026:3000:d0::d, 2603:1027:1:d8::9, ...
Connecting to login.microsoftonline.com (login.microsoftonline.com)|2603:1027:1:d8::5|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1753 (1.7K) [application/json]
Saving to: ‘STDOUT’
<entra response here>
2024-07-09 07:45:47 (112 MB/s) - written to stdout [1753/1753]
Finally, I configured the IDP by manually setting the token and authorization endpoint instead of using the discovery mechanism, but the issue from my original post remains.