我有两个 webapp 将 A 和 B 与 Cas 集成。当我尝试访问 webapp A 的受保护区域时,过滤器将我重定向到 cas 登录。登录后,我回到 webapp A,一切正常。当我从 webapp A 导航到 webapp B 的受保护区域时,cas 过滤器再次重定向到登录表单。我也在 tomcat 6.0.37 上尝试过这个应用程序,并且在没有其他登录请求的情况下一切正常。
关于 Jboss 的日志,我看到了一个被截断的 TGT。我第一次登录 cas 时,它写道:
2013 年 11 月 9 日 11:14:40,533 调试 [org.jasig.cas.ticket.registry.DefaultTicketRegistry] 已将票证 [TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000] 添加到注册表。 2013 年 11 月 9 日 11:14:40,533 信息 [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] 审计跟踪记录开始 ==================================================== =========== 谁:[用户名:myuser] 什么:TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000 行动:TICKET_GRANTING_TICKET_CREATED 应用:CAS 时间:2013 年 11 月 9 日星期六 11:14:40 CET 客户端 IP 地址:127.0.0.1 服务器 IP 地址:127.0.0.1 ==================================================== ===========
当我从应用程序 A 转到应用程序 B 时,日志是:
2013 年 11 月 9 日 11:14:54,339 调试 [org.jasig.cas.ticket.registry.DefaultTicketRegistry] 尝试检索票证 [TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http] 2013 年 11 月 9 日 11:14:54,340 信息 [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] 审计跟踪记录开始 ==================================================== =========== 世卫组织:审计:未知 什么:http://localhost:8000/webappB/desktop.iface 行动:SERVICE_TICKET_NOT_CREATED 应用:CAS 时间:2013 年 11 月 9 日星期六 11:14:54 CET 客户端 IP 地址:127.0.0.1 服务器 IP 地址:127.0.0.1 ==================================================== ===========
可以看到,cas 生成 TGT:
TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000
并尝试检索:
TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http
我找到了一种解决方法,将使用 ${host.name} 的 bean DefaultUniqueTicketIdGenerator 的 value 属性更改为不带字符 ':' 和 '/' 的字符串。
我不会更改 cas 配置,因为它被很多应用程序使用并且部署在不同的环境中。为什么 Jboss 中的 cas 不像在 tomcat 中那样工作?我错过了一些配置吗?