【问题标题】:Error with Cas SERVICE_TICKET_NOT_CREATED and TGT trucanted with JBoss 5.1.0.GACas SERVICE_TICKET_NOT_CREATED 出错,TGT 被 JBoss 5.1.0.GA 截断
【发布时间】: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:

TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000

并尝试检索:

TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http

我找到了一种解决方法,将使用 ${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


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 2014-11-26
  • 2013-01-01
  • 2019-12-18
相关资源
最近更新 更多