如何在Kubernetes上的Quarkus中设置OIDC到Keyshaak的连接

是否有人在Kubernetes集群中部署的Quarkus应用程序中成功设置了OIDC到Keyloack的连接? 您能解释一下connection-delay(以及其他相关参数)是如何工作的吗? (Here is the documentation我尝试跟随)

在我们的环境(Quarkus 1.13.3.Final,Keyloak 12.0.4)中,我们有这样的配置:

Quarkus.oidc.连接延迟:6M
Quarkus.oidc.Connection-超时:30s
Quarkus.oidc.tenant-id:testTenant-01

启动Pod时,这些消息会出现在Pod的日志中:

2021-07-26 14:44:22,523信息[Main][OidcRecorder.Java:264]- 每2秒最多连接IdP 180次
2021/07/26 14:44:24,142调试[vert.x-事件循环-线程-1] [OidcRecorder.java:115]-‘testTenant-01’租户初始化失败: ‘未配置OpenID Connect提供程序配置元数据,并且 不能被发现‘。访问受此租户保护的资源 将失败,并返回HTTP 401。

(...当Pod正在运行时,随后会出现以下日志...)

2021-07-27 06:11:54,261调试[vert.x-eventloop-thread-0] [DefaultTenantConfigResolver.java:112]-租户‘null’不是 已初始化
2021-07-27 06:11:54,262错误 [vert.x-eventloop-thread-0][QuarkusErrorHandler.java:101]-HTTP 对/q/Health/live的请求失败,错误ID: 89f83d1d-894c-4Fed-9995-0d42d60cec17-2:io.Quarkus.oidc.OIDCException: 租户配置尚未在以下位置解析 io.quarkus.oidc.runtime.OidcAuthenticationMechanism.resolve(OidcAuthenticationMechanism.java:61) 在… io.quarkus.oidc.runtime.OidcAuthenticationMechanism.authenticate(OidcAuthenticationMechanism.java:40) 在… io.quarkus.oidc.runtime.OidcAuthenticationMechanism_ClientProxy.authenticate(OidcAuthenticationMechanism_ClientProxy.zig:189) 在… io.quarkus.vertx.http.runtime.security.HttpAuthenticator.attemptAuthentication(HttpAuthenticator.java:100) 在… io.quarkus.vertx.http.runtime.security.HttpAuthenticator_ClientProxy.attemptAuthentication(HttpAuthenticator_ClientProxy.zig:157) 在… io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:101) 在… io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:51) 在… io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1038)

问题:

  1. 有没有办法找出缺少哪些元数据?
  2. 我是否可以以某种方式更改连接尝试之间的2秒间隔?
  3. 连接延迟和连接超时之间有什么关系吗?
  4. CCA 2s后失败-是表示第一次尝试立即失败,还是这么快就完成了180次尝试?
  5. 初始化时DefaultTenantConfigResolver是否与OidcRecorder从不同的资源获取租户,即是否应该在多处配置租户?

解决方案

最终使其正常工作。由错误的auth-server-url引起,日志消息中根本不清楚。

quarkus.oidc.client-id: my-app
quarkus.oidc.enabled: true
quarkus.oidc.connection-delay: 6M
quarkus.oidc.connection-timeout: 30S
quarkus.oidc.tenant-id: testTenant-01
quarkus.oidc.auth-server-url: ${keycloak.url}/auth/realms/${quarkus.oidc.tenant-id}

Quarkus doc中强调了url格式:注意:如果您使用Keyloak OIDC服务器,请确保基本URL采用以下格式:https://host:port/auth/realms/{realm},其中{Realm}必须替换为Keyloak领域的名称

相关文章