【问题标题】:keycloak stops working when enabling tls behind nginx ingress controller在 nginx 入口控制器后面启用 tls 时,keycloak 停止工作
【发布时间】:2020-06-15 09:13:59
【问题描述】:

我需要有关如何使用 TLS 在 eks kubernetes 上配置 nginx 入口控制器和 keycloak 的建议。

我的第一次尝试是让 keycloak 在没有 TLS 的情况下工作。这工作正常。但是当我将 TLS 添加到入口定义时,keycloak 会给出 Invalid parameter: redirect_uri 错误。

这是工作示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: keycloak-tls-test
  namespace: keycloak-tls-test
spec:
  rules:
  - host: keycloak.test.myhops.com
    http:
      paths:
      - backend:
          serviceName: keycloak
          servicePort: 80

当我添加 tls 部分时,出现上述错误。请参阅下面的 yaml 文件。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: keycloak-tls-test
  namespace: keycloak-tls-test
spec:
  tls:
  - hosts:
    - keycloak.test.myhops.com
    secretName: test-myhops-tls
  rules:
  - host: keycloak.test.myhops.com
    http:
      paths:
      - backend:
          serviceName: keycloak
          servicePort: 80

关于如何解决这个问题的任何建议?一个在线建议是将https://keycloak.test.myhops.com/* 添加到主域中security-admin-console 客户端的有效重定向URL。这解决了无效的 redirect_uri 错误,但后来我只有空白页。我在 keycloak 日志中找不到提示。

【问题讨论】:

    标签: ssl keycloak nginx-ingress amazon-eks


    【解决方案1】:

    我找到了导致问题的原因。似乎当在终止 TLS 的反向代理后面使用 keycloak 时,keycloak 需要设置代理地址转发。对于 docker 容器,这意味着 env var PROXY_ADDRESS_FORWARDING=true 可以解决问题。所以 Ingress 是正确的,keycloak 部署需要一个额外的环境变量。

    请注意,ingress-nginx 已经为此设置了正确的标头:

    • X-Forwarded-For
    • X-Forwarded-Proto

    Docker documentation [keycloak文档2

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2018-11-15
      • 2018-09-17
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2012-05-23
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多