当前位置: 首页 > 知识库问答 >
问题:

如何在Kubernetes上的Quarkus中建立到Keycloak的OIDC连接

盛浩阔
2023-03-14

是否有人成功地在部署在Kubernetes集群中的Quarkus应用程序中设置了与Keycloack的OIDC连接?您能说明connection-delay(和其他相关参数)是如何工作的吗?(以下是我试图遵循的文档)

当POD启动时,这些味精会出现在它的日志中:

2021-07-26 14:44:22,523 INFO[main][oidcrecorder.java:264]-每2秒连接IDP最多180次
2021-07-26 14:44:24,142 DEBUG[vert.x-eventloop-thread-1][oidcrecorder.java:115]-“TestTenant-01”租户初始化失败:“未配置OpenID Connect Provider配置元数据,无法发现”。使用HTTP 401访问受此租户保护的资源将失败。

(...当吊舱运行时,后面的日志会出现...)

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]-对/q/healt/live的HTTP请求失败,错误ID:89F83D1D-894C-4Fed-9995-0D42D60CEC17-2:io.quarkus.oidc.oidc.exception:在io.quarkus.oidc.runtime.oidcauthenticationmechanism.authenticate(Oidcauthenticationmechanism.java:61)在io.quarkus.oidc.runtime.oidcauthenticationmechanism.java:40)在io.quarkus.oidc.runtime.oidcauthenticationmechanism_clientproxy.authenticate(Oidcauthenticationmechanism_clientproxy.zig:189)在: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. 我可以以某种方式更改连接尝试之间的2s周期吗?
  3. 连接延迟和连接超时之间有关系吗?
  4. 它在cca 2s后失败-这意味着它在第一次尝试中立即失败,还是它很快就完成了180次尝试?
  5. DefaultTenantConfigResolver在初始化时是否从不同的资源获取租户,而不是从Oidcrecorder获取租户,即是否应该在多个位置配置租户?

共有1个答案

郭思聪
2023-03-14

终于让它起作用了。由错误的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格式:注意,如果您使用Keycloak OIDC服务器,请确保基URL采用以下格式:https://host:port/auth/realms/{realm},其中{realm}必须用Keycloak realm的名称替换

 类似资料:
  • 我正在使用Quarkus 1.0.1框架开发一套微服务。我希望使用KeyCloak8.0.1作为我的身份提供程序来保护这些信息。我已经在一个Docker容器中启动并运行了Keycloak,并为我的微服务配置了一个领域和相应的客户机。现在我到了我想保护他们的地步,我遇到了一个问题。 我的REST服务没有为它配置的注释或任何授权要求。这应该意味着,即使我没有经过身份验证,我也能够访问该服务。但是,当我

  • 我目前正在使用多个Quarkus服务和Keycloak RBAC开发一个PoC。工作起来就像一个魅力,很容易引导和开始实现功能。 但我遇到了一个我无法解决的问题。想象一下: null 使JWT的持续时间超过当前的30分钟,但这只是推迟了问题并打开了一些安全门 将用户的输入存储在本地存储器中,以便在令牌刷新后进行恢复(我们也会这样做,以避免浪费用户的工作) 在JS中“静默”刷新令牌,而不让用户知道。

  • 我在kubernetes集群上部署了spring boot微服务。在集群之外,AWS上有netflix eureka发现服务。我想在这个eureka上注册我的服务。网关也在AWS上。在我的本地机器上,我需要通过openvpn创建vpn连接以访问eureka,Kubernetes群集也在aws之外,需要vpn。我有*。ovpn,我想我必须在kubernetes上创建一些vpn隧道,但我不知道合适的工

  • 我的会监听局域网连接并很好地接受它们,但当我试图通过手机连接到同一个网络时(使用3G连接),它似乎无法连接。 > 我尝试使用站点获取并尝试连接到它,它确实得到正确的(用我的路由器检查),但然后没有连接被接受。 我试着打开windows 7和路由器上的端口。 我把这些行在我的服务器构造函数: 我将主机上的ip设置为0.0.0.0 谢谢你的帮助。

  • 我是Quarkus的新手,我正在Quarkus 1.13.3中尝试OIDC,我添加了oidc-dependency并用@rolesalloved注释了我的REST-Service-methods。当我用过期的JWT-Token调用服务时,我得到401,当我用错误的用户组调用时,我得到403,到目前为止这还不错。但是,Quarkus在这样做的时候并没有在日志中写入任何内容。我需要日志消息声明有人用无

  • 问题内容: 我试图理解,我在我的应用程序中使用。我在中编写了以下代码: 我在Windows Xp OS中将4型jdbc连接与oracle 10g EE一起使用 然后我按如下方式检索servlet: 是它还是需要某些配置? 问题答案: 您可以获得第三方库,也可以使用连接池为您提供的Java EE容器(例如,JBoss或WebSphere)。 为此,您可以配置和使用JNDI数据源。 以下是Tomcat