【发布时间】:2013-11-21 12:13:47
【问题描述】:
我有两个 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:
并尝试检索:
我找到了一种解决方法,将使用 ${host.name} 的 bean DefaultUniqueTicketIdGenerator 的 value 属性更改为不带字符 ':' 和 '/' 的字符串。
我不会更改 cas 配置,因为它被许多应用程序使用并且部署在不同的环境中。 为什么 Jboss 中的 cas 不能像在 tomcat 中那样工作? 我错过了一些配置吗?
【问题讨论】:
-
我已经调试了 cas 代码,cookie 被浏览器正确发送。 cookie 是使用调用标准 HttpServletRequest 的 sprinframework org.springframework.web.util.WebUtils.getCookie 的实用方法在类 org.jasig.cas.web.support.CookieRetrievingCookieGenerator 中检索的。我想问题出在 JBoss 容器中,而不是在 cas 中。
标签: spring single-sign-on tomcat6 jboss5.x cas