电流:
收到的请求(/sso)->特使代理->/sso
期望流:
收到的请求(/sso)->特使代理->密钥斗篷-守门人->键盘斗篷 ->如果没有登录-> keycloak标记页-> /sso-kibana ->如果已经登录-> /sso-kibana
我将keycloak-网关管理员部署为一个具有以下配置的k8s集群:
keycloak-gatekeeper.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: keycloak-gatekeeper
name: keycloak-gatekeeper
spec:
selector:
matchLabels:
app: keycloak-gatekeeper
replicas: 1
template:
metadata:
labels:
app: keycloak-gatekeeper
spec:
containers:
- image: keycloak/keycloak-gatekeeper
imagePullPolicy: Always
name: keycloak-gatekeeper
ports:
- containerPort: 3000
args:
- "--config=/keycloak-proxy-poc/keycloak-gatekeeper/gatekeeper.yaml"
- "--enable-logging=true"
- "--enable-json-logging=true"
- "--verbose=true"
volumeMounts:
-
mountPath: /keycloak-proxy-poc/keycloak-gatekeeper
name: secrets
volumes:
- name: secrets
secret:
secretName: gatekeepergatekeeper.yaml
discovery-url: https://keycloak/auth/realms/MyRealm
enable-default-deny: true
listen: 0.0.0.0:3000
upstream-url: https://kibana.k8s.cluster:5601
client-id: kibana
client-secret: d62e46c3-2a65-4069-b2fc-0ae5884a4952Envoy.yaml
- name: kibana
hosts: [{ socket_address: { address: keycloak-gatekeeper, port_value: 3000}}]问题:
我能够在/Kibana上调用keycloak登录,但是在登录后,用户不会访问/Kibana url,即Kibana仪表板没有加载。
注意: Kibana也作为k8s集群运行。
参考资料:
https://medium.com/stakater/proxy-injector-enabling-sso-with-keycloak-on-kubernetes-a1012c3d9f8d
更新1:
我可以在/sso上调用keycloak登录,但是在输入凭据之后,它就可以给404了。流动情况如下:
步骤1.单击http://something/sso-kibana
步骤2.密钥披风登录页面在https://keycloak/auth/realms/THXiRealm/protocol/openid-connect/auth.
步骤3.输入凭据后重定向到该URL https://something/sso-kibana/oauth/callback?state=890cd02c-f.
步骤4. 404
更新2:
在Envoy.yaml中添加了一条新的路由后,解决了404错误
Envoy.yaml
- match: { prefix: /sso-kibana/oauth/callback }
route: { prefix_rewrite: "/", cluster: kibana.k8s.cluster }因此,预期的流(如下图所示)现在运行良好。
收到的请求(/sso)->特使代理->密钥斗篷-守门人->键盘斗篷 ->如果没有登录-> keycloak标记页-> /sso-kibana ->如果已经登录-> /sso-kibana
https://stackoverflow.com/questions/57497526
复制相似问题