2014-09-25 32 views
0

我想安裝一個CAS服務器版本4.0.0實例,並配置票據註冊表。當我嘗試登錄時,我遇到的問題發生在JpaTicketRegistryCAS JpaTicketRegistry不起作用

基本上,當我登錄時,會創建一個Authentication對象,併爲該身份驗證創建TicketGrantingTicket,並且它應該與票證註冊表一起保存。 TicketGrantingTicket具有authentication屬性,應該將其保留爲Lob。問題是創建AuthenticationAuthenticationBuilderattributes屬性設置爲LinkedHashMap,其中包含不可序列化的類LinkedKeySet。現在,當JpaTicketRegistry試圖保留TicketGrantingTicket時,由於SerializationException,它失敗。

當我試圖使用EhCacheTicketRegistry與ehcache保存到磁盤出於同樣的原因時出現同樣的問題。有沒有辦法解決這個問題,以便我可以堅持這個對象?

CAS 4.0使用Hibernate 4.1.0 JPA的實現和Spring 3.2.6

回答

1

的問題是,如下。在org.jasig.cas.authentication.SuccessfulHandlerMetaDataPopulator中,populateAttributes方法添加successes地圖的keyset。問題是keysetjava.util.LinkedHashMap$LinkedKeySet的一個實例,它不是可序列化的,導致SerializationException在嘗試在登錄後持續登錄TicketGrantingTicket時使用JpaTicketRegistry或甚至EHCacheTicketRegistry寫入磁盤啓用。

我創建了自己AuthenticationMetaDataPopulator,併爲CAS團隊創建了一個issue,並創建了一個pull request