我在 Kubernetes 集群内配置了 Keycloak (10.0.3) 服务器。
keycloak 服务器必须处理外部用户的身份验证(使用外部 url),并处理用于 Spring 微服务通信的 oauth2 令牌。
然后Web应用程序Spring服务使用oidc提供者:
spring:
security:
oauth2:
client:
provider:
oidc:
issuer-uri: http://keycloak-cluster-http.keycloak-cluster.svc.cluster.local/auth/realms/myrealm
authorization-uri: http://keycloak-cluster-http.keycloak-cluster.svc.cluster.local/auth/realms/myrealm/protocol/openid-connect/auth
jwk-set-uri: http://keycloak-cluster-http.keycloak-cluster.svc.cluster.local/auth/realms/myrealm/protocol/openid-connect/certs
token-uri: http://keycloak-cluster-http.keycloak-cluster.svc.cluster.local/auth/realms/myrealm/protocol/openid-connect/token
user-name-attribute: preferred_username
keycloak的外部URL是https://keycloak.localhost https://keycloak.localhost,由 Traefik v2 处理的入口重定向管理
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: keycloak-https
namespace: keycloak-cluster
annotations:
traefik.frontend.passHostHeader: "true"
spec:
entryPoints:
- websecure
routes:
- match: Host(`keycloak.localhost`)
kind: Rule
services:
- name: keycloak-cluster-http
port: 80
tls:
options:
name: mytlsoption
namespace: traefik
store:
name: default
我可以使用访问Keycloakhttps://keycloak.localhost https://keycloak.localhost,没问题,它可以工作。
问题是,当我尝试访问我的 Web 应用程序时,它总是会重定向到“http://keycloak-cluster-http.keycloak-cluster.svc.cluster.local/auth/realms/myrealm”,该问题尚未解决k8s 之外。
如果我将 Issuer-uri 更改为http://keycloak.localhost http://keycloak.localhost那么它就不起作用,因为 keycloak.locahost 在 k8s 内部未解析。
我尝试将 KEYCLOAK_FRONTEND_URL 设置为https://keycloak.localhost/auth https://keycloak.localhost/auth,但没有变化。
请问,有人有相同类型的设置并设法使其正常工作吗?
此致