Kong背后的Keycloak和奇怪的重定向
Posted
技术标签:
【中文标题】Kong背后的Keycloak和奇怪的重定向【英文标题】:Keycloak behind Kong and strange redirect 【发布时间】:2019-08-05 11:25:12 【问题描述】:设置:
minikube 版本:v0.27.0 Kong(helm install stable/kong)/版本 1.0.2 Keycloak(helm install stable/keycloak)/版本 4.8.3.Final我的“hello.local”有一个自签名 SSL 证书。
我需要实现的目标:Kong 后面的 Keycloak at "https://hello.local/"。
我的步骤:
1) 新鲜的 minikube
2) 使用 helm 安装 Keycloak,遵循 values.yaml:
keycloak:
basepath: ""
replicas: 1
...
extraEnv: |
- name: PROXY_ADDRESS_FORWARDING
value: "true"
(这将创建服务auth-keycloak-http
)
3) 使用 helm 安装 Kong,遵循 values.yaml:
replicaCount: 1
admin:
ingress:
enabled: true
hosts: ['hello.local']
proxy:
type: LoadBalancer
ingress:
enabled: true
hosts: ['hello.local']
tls:
- hosts:
- hello.local
secretName: tls-certificate
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
tls:
enabled: true
postgresql:
...
4) 我为 Kong 设置服务和路由
服务:
Protocol: http
Host: auth-keycloak-http
Port: 80
路线:
Hosts: hello.local
之后我可以打开“https://hello.local”并从 Keycloak 看到欢迎页面,我可以在其中单击管理控制台,然后在浏览器中重定向到“https://hello.local:8443/admin/master/console/”。因此,此时我们不应该使用另一个端口进行重定向。
如果 PROXY_ADDRESS_FORWARDING
是 true
,则使用 2 个 docker 映像(Keycloak + Kong)的设置正在工作。
如何使 Keycloak(掌舵图)按预期在 kubernetes 集群中的 Kong(掌舵图)后面工作,而无需重定向?
github issue 1、github issue 2 和 github issue 3 正在讨论这个问题。还有,类似问题on ***
【问题讨论】:
你问什么问题? 已添加问题,以及与此问题相关的额外链接 【参考方案1】:原答案:
看来,需要在keycloak helm chart的values.yaml中设置如下环境变量:
...
extraEnv: |
- name: KEYCLOAK_HTTP_PORT
value: "80"
- name: KEYCLOAK_HTTPS_PORT
value: "443"
- name: KEYCLOAK_HOSTNAME
value: example.com
...
所有这些都是必需的,之后,重定向将正常工作。
于 2021 年 9 月添加:
问题weird behavior with redirect to port 8443 进行某些操作(例如通过管理控制台右上角的链接转到帐户管理)。
实际上我们不需要设置任何KEYCLOAK_HTTP_PORT
或KEYCLOAK_HTTPS_PORT
。
代理端需要进行一些更改。在代理上,我们需要为此路由设置x-forwarded-port
为443
。
在我的例子中,我们使用 Kong:
在暴露Keycloak的路线上,我们需要添加(这个对我有用):
serverless
> post function
内容如下:
ngx.var.upstream_x_forwarded_port=443
More info on KONG and x_forwarded_*
【讨论】:
应该有“hello.local”而不是“example.com”;我说的对吗? 是的,但是取决于您要访问 keycloak 的域 我正在考虑向 keycloak helm 提交关于添加这些的 PR,即使它们已被注释掉,今天花了太长时间试图弄清楚这一点 :) 谢谢!以上是关于Kong背后的Keycloak和奇怪的重定向的主要内容,如果未能解决你的问题,请参考以下文章
grails spring security ui登录有时会出现奇怪的重定向