You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift同命名空间下Spring Security对接Keycloak重定向及令牌异常问题

解决OpenShift中Spring Boot与Keycloak的重定向及令牌异常问题

问题根源

  1. 初始配置使用Keycloak的内部集群服务地址作为issuer-uri,导致Spring Security向前端返回的授权重定向URL为内部不可访问地址,用户无法正常跳转登录。
  2. 单独修改authorization-uri为外部域名后,Keycloak颁发的令牌中issuer字段为外部域名,但Spring Boot仍以内部issuer-uri验证令牌,两者不匹配,触发令牌验证异常。

解决方案

1. 配置Keycloak固定Issuer地址

在OpenShift的Keycloak Deployment中添加以下环境变量,强制Keycloak使用外部域名作为全局Issuer,确保内部、外部访问生成的令牌Issuer一致:

env:
  - name: KC_HOSTNAME
    value: keycloak-my-namespace.openshift.mydomain.com
  - name: KC_HOSTNAME_STRICT
    value: "true"
  - name: KC_PROXY
    value: edge
  • KC_HOSTNAME:指定Keycloak对外暴露的正式域名
  • KC_HOSTNAME_STRICT:强制所有OIDC端点使用配置的域名,忽略请求的Host头
  • KC_PROXY:适配OpenShift Edge路由的HTTPS终止场景

2. 更新Spring Boot的application.properties配置

# OAuth2客户端注册配置
spring.security.oauth2.client.registration.keycloak.client-id=my-app
spring.security.oauth2.client.registration.keycloak.client-secret=
spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.keycloak.scope=openid
# 配置Spring Boot的外部重定向地址(根据实际路由调整)
spring.security.oauth2.client.registration.keycloak.redirect-uri=https://springboot-my-namespace.openshift.mydomain.com/login/oauth2/code/keycloak

# Keycloak Provider配置
# 使用与Keycloak一致的外部Issuer地址
spring.security.oauth2.client.provider.keycloak.issuer-uri=https://keycloak-my-namespace.openshift.mydomain.com/realms/my-realm
# 可选:使用内部服务地址获取JWK证书,减少外部网络依赖
spring.security.oauth2.client.provider.keycloak.jwk-set-uri=http://keycloak.my-namespace.svc.cluster.local:8080/realms/my-realm/protocol/openid-connect/certs
spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username

3. 验证操作

  • 重启Keycloak和Spring Boot Pod,使配置生效
  • 访问Spring Boot的外部地址,会正确重定向到Keycloak的外部登录页
  • 登录后令牌验证通过,无异常出现

内容的提问来源于stack exchange,提问作者viceincapacitateonly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:56:01