在Kubernetes中无法访问Keycloak账户控制台(403)。

3
我在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访问控制配置问题,但在两种情况下我都使用默认图像而没有进行任何更改。我进行了交叉检查以确保,管理员用户和account-console客户端在docker和k8s应用程序中完全相同地配置。

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

2个回答

1
尝试在Keycloak数据库中的您的领域(master)中的realm表中设置ssl_required = NONE。请注意,保留HTML标签。

2
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

我们发现是nginx的ingress控制器引起了很多问题。虽然我们能够通过X-Forwarded-Proto等方式让它与nginx配合工作,但这有点复杂和混乱。转而使用haproxy解决了这个问题。此外,请确保您通过https与ingress控制器进行交互,否则可能会出现与keycloak相关的问题。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接