CAS 6.6.15集成pac4j后Google/Facebook登录重定向异常
核心问题
升级Apereo CAS至v6.6.15(搭配pac4j v5.4.6)后,使用Google/Facebook委托登录时,回调URL仍指向旧域名test-sso.domain.com.uy/cas/login,无法按配置跳转到指定的新域名SSO首页,且找不到旧域名的配置来源。
当前依赖与配置
build.gradle依赖(存在拼写错误)
implementation org.apereo.cas:cas-server-support-rest-authentication implementation org.apereo.cas:cas-server-support-pac4j-authentication // 注意:此处存在拼写错误,mplementation需改为implementation implementation org.apereo.cas:cas-server-support-json-service-registry implementation org.apereo.cas:cas-server-core implementation org.apereo.cas:cas-server-core-authentication implementation org.apereo.cas:cas-server-core-authentication-api implementation org.apereo.cas:cas-server-core-api-authentication implementation org.apereo.cas:cas-server-core-web-api implementation org.apereo.cas:cas-server-support-pac4j-webflow implementation org.apereo.cas:cas-server-support-pac4j-core
cas.properties相关配置
cas.authn.pac4j.google.callback-url=https://aws-sso.domain.com/[指定路径] cas.authn.pac4j.facebook.callback-url=https://aws-sso.domain.com/[指定路径]
排查与修复步骤
1. 修正依赖拼写错误
将build.gradle中拼写错误的mplementation改为implementation,确保cas-server-support-json-service-registry依赖被正确引入,避免服务注册或配置加载异常。
2. 检查CAS全局域名配置
CAS v6.6.x中,全局服务器域名是生成回调URL的基础,需确认以下属性已更新为新域名:
cas.server.name=https://aws-sso.domain.com cas.server.prefix=/cas
若未显式配置cas.authn.pac4j.*.callback-url的完整域名,CAS会自动拼接此全局域名,旧域名可能由此残留。
3. 补全回调URL配置
确保cas.authn.pac4j.google.callback-url和cas.authn.pac4j.facebook.callback-url配置完整的URL,例如:
cas.authn.pac4j.google.callback-url=https://aws-sso.domain.com/cas/login cas.authn.pac4j.facebook.callback-url=https://aws-sso.domain.com/cas/login
仅配置路径会导致CAS自动拼接旧的全局域名,引发跳转异常。
4. 清理缓存与遗留配置
- 清理CAS服务器临时缓存目录(默认
/cas/temp)及Tomcat的work目录,避免旧配置残留。 - 排查类路径下是否存在其他
cas.properties文件(如Tomcat的lib目录、非默认资源目录),这类文件可能覆盖当前配置。 - 检查JSON服务注册中心的
services目录,确认所有服务定义中的回调地址已更新为新域名。
5. 检查第三方平台配置
登录Google Cloud Console和Facebook开发者平台,确认OAuth应用的回调URL已更新为新域名https://aws-sso.domain.com/cas/login,第三方平台的旧配置也会导致跳转异常。
6. 校验Tomcat代理配置
若CAS部署在反向代理后,需检查Tomcatserver.xml中Connector的代理配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" proxyName="aws-sso.domain.com" proxyPort="443" scheme="https"/>
确保proxyName和proxyPort设置为当前新域名及端口,否则CAS会从请求头或Tomcat配置中读取旧域名。
7. 启用调试日志定位问题
在cas.properties中添加调试配置,重启CAS后查看日志,确认配置加载情况:
logging.level.org.apereo.cas=DEBUG logging.level.org.pac4j=DEBUG
通过日志可排查是否读取到正确的回调URL,以及是否有旧配置被加载的痕迹。
内容的提问来源于stack exchange,提问作者DDL

