1

我有两个 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 中那样工作?我错过了一些配置吗?

4

1 回答 1

1

host.name属性通常只用于生成票证,并不要求它实际上是主机名。它仅用于确保票证是唯一的,尤其是在集群 CAS 环境中。

尝试删除您的协议和端口组件,host.name因为它看起来在回程中没有正确处理冒号。

您可以在https://wiki.jasig.org/display/CASUM/Clustering+CAS的 CAS 手册中看到它的使用情况。

于 2013-11-09T19:39:28.763 回答