我正在尝试安装CAS服务器4.0.0版实例,并配置票证注册表。当我尝试登录时,我遇到的问题是JpaTicketRegistry

基本上,当我登录时,将创建一个Authentication对象,并为该身份验证创建一个TicketGrantingTicket,并且应该将其与票证注册表一起保存。 TicketGrantingTicket具有一个authentication属性,应保留为Lob。问题是,创建AuthenticationBuilderAuthentication将其中的attributes属性设置为LinkedHashMap,其中包括不可序列化的类LinkedKeySet。现在,当JpaTicketRegistry尝试保留TicketGrantingTicket时,由于SerializationException,它失败了。

当出于相同原因尝试将EhCacheTicketRegistry与ehcache保存到磁盘时,会出现相同的问题。有没有办法解决这个问题,以便我可以坚持这个目标?

CAS 4.0使用Hibernate 4.1.0作为JPA实现并使用Spring 3.2.6

最佳答案

问题如下。在org.jasig.cas.authentication.SuccessfulHandlerMetaDataPopulator中,populateAttributes方法添加keyset映射的successes。问题是keysetjava.util.LinkedHashMap$LinkedKeySet的实例,该实例不可序列化,导致在登录后使用SerializationException甚至TicketGrantingTicket写入磁盘时尝试保留JpaTicketRegistry时导致EHCacheTicketRegistry已启用。

我创建了自己的AuthenticationMetaDataPopulator,并为CAS团队创建了issue,并创建了pull request

关于java - CAS JpaTicketRegistry无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26037532/

10-10 11:40