【问题标题】:Cannot access Keycloak account-console in Kubernetes (403)无法访问 Kubernetes 中的 Keycloak 帐户控制台 (403)
【发布时间】:2022-08-05 04:56:14
【问题描述】:

当部署在 Kubernetes 中时,我在 Keycloak 中发现了一个奇怪的行为,我无法理解。

用例:

  • 以 admin:admin 身份登录(默认创建)
  • 点击管理账户

(manage account dialog screenshot)

我比较了(相同的)图像(quay.io/keycloak/keycloak:17.0.0) 如果它在 Docker 或 Kubernetes (K3S) 上运行,则表现良好。

如果我从 Docker 运行它,则会加载帐户控制台。换句话说,我获得了成功(204) 请求

GET /realms/master/protocol/openid-connect/login-status-iframe.html/init?client_id=account-console

从 Kubernetes 中部署的同一个镜像,同一个请求失败并出现错误403.但是,在同一个应用程序中,我获得了成功(204) 请求

GET /realms/master/protocol/openid-connect/login-status-iframe.html/init?client_id=security-admin-console

因为我可以调用 security-admin-console,所以这看起来不像 Kubernetes Ingress 网关的问题,也不是与路由相关的任何问题。

然后我想到了 Keycloak 访问控制配置问题,但在这两种情况下,我都使用默认图像而不做任何更改。我反复检查以确保管理员用户和帐户控制台客户端在 docker 和 k8s 应用程序中的配置方式完全相同。

我不知道可能是什么问题,您有什么建议吗?

    标签: docker kubernetes keycloak


    【解决方案1】:

    尝试设置ssl_required = NONE领域Keycloak 数据库中的表到您的领域(主)

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    所以我们发现是nginx 入口控制器导致了很多问题。虽然我们能够让它与nginxX-Forwarded-Proto 等一起工作,但它有点复杂和令人费解。转移到haproxy 解决了这个问题。此外,请确保您通过 https 与入口控制器进行交互,否则可能会导致 keycloak 出现问题。

      annotations:
            kubernetes.io/ingress.class: haproxy
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 2016-09-10
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 2020-02-18
      • 2022-08-20
      • 2020-06-04
      相关资源
      最近更新 更多