【发布时间】:2021-10-02 13:03:21
【问题描述】:
是否有人成功地在 Kubernetes 集群中部署的 Quarkus 应用程序中建立了与 Keycloack 的 OIDC 连接?
您能否澄清connection-delay(和其他相关参数)是如何工作的?
(Here is the documentation我试图关注)
在我们的环境中(Quarkus 1.13.3.Final,Keycloak 12.0.4)我们有这样的配置:
quarkus.oidc.connection-delay: 6M
quarkus.oidc.connection-timeout: 30S
quarkus.oidc.tenant-id: testTenant-01
这些消息在 pod 启动时出现在它的日志中:
2021-07-26 14:44:22,523 信息 [主要] [OidcRecorder.java:264] - 每 2 秒最多连接到 IDP 180 次
2021-07-26 14:44:24,142 调试 [vert.x-eventloop-thread-1] [OidcRecorder.java:115] - 'testTenant-01' 租户初始化失败: 'OpenId Connect Provider 配置元数据未配置并且 不能被发现”。访问受此租户保护的资源 将失败并返回 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)
问题:
- 有什么方法可以找出缺少哪些元数据?
- 我能以某种方式更改连接尝试之间的 2 秒时间吗?
- 连接延迟和连接超时之间有什么关系吗?
- 它在 cca 2s 后失败 - 是否意味着它在第一次尝试时立即失败,或者它如此快地完成了 180 次尝试?
-
DefaultTenantConfigResolver在初始化时是否从与OidcRecorder不同的资源获取租户,即是否应在多个位置配置租户?
【问题讨论】:
-
是的,我已经使用 oicd 插件运行带有 keycloak 的 quarkus 至少一年了。你的授权方案是什么?,你打算使用受保护的资源还是只验证 JWT 令牌并从中检索信息?
-
作为对一般错误的响应,您似乎缺少非租户配置的多租户配置。这意味着正如您在堆栈中看到的那样,无租户正在解析,因此没有从您的属性或租户解析器加载配置,这似乎是您的错误的原因
-
@karelss 我们需要管理对API的访问,主要使用RolesAllowed注解。
-
no-tenant 正在解决,因此没有从您的属性加载配置 - 请您澄清一下吗?在 2021-07-26 14:44:24,142 的日志消息中,您可以看到租户已加载,但稍后在 2021-07-27 06:11:54,261 它说租户为空。
-
是的,我错过了那个日志条目,你能发布你的应用程序属性文件或最终配置来检查你有什么吗?只需将
和 放在出现私人信息的地方
标签: java kubernetes keycloak openid-connect quarkus