2013-11-09 115 views
1

我有兩個webapp集成A和B與Cas。當我嘗試訪問webapp A的保護區域時,過濾器會將我重定向到cas登錄。登錄後,我回到webapp A,並且一切正常。當我從webapp A導航到webapp B的受保護區域時,cas篩選器再次重定向到登錄表單。 我已經試過這個應用程序也在tomcat 6.0.37上,並沒有另一個登錄請求的所有工作正常。錯誤與Cas SERVICE_TICKET_NOT_CREATED和TGT與JBoss 5.1.0一起銷燬.GA

關於Jboss中的日誌,我看到一個截斷的TGT。我第一次對CAS登錄,它寫:

 
09 nov 2013 11:14:40,533 DEBUG [org.jasig.cas.ticket.registry.DefaultTicketRegistry] Added ticket [TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000] to registry. 
09 nov 2013 11:14:40,533 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] Audit trail record BEGIN 
============================================================= 
WHO: [username: myuser] 
WHAT: TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http://localhost:8000 
ACTION: TICKET_GRANTING_TICKET_CREATED 
APPLICATION: CAS 
WHEN: Sat Nov 09 11:14:40 CET 2013 
CLIENT IP ADDRESS: 127.0.0.1 
SERVER IP ADDRESS: 127.0.0.1 
============================================================= 

當我從應用程序一去到App B中的日誌:

 
09 nov 2013 11:14:54,339 DEBUG [org.jasig.cas.ticket.registry.DefaultTicketRegistry] Attempting to retrieve ticket [TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http] 
09 nov 2013 11:14:54,340 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] Audit trail record BEGIN 
============================================================= 
WHO: audit:unknown 
WHAT: http://localhost:8000/webappB/desktop.iface 
ACTION: SERVICE_TICKET_NOT_CREATED 
APPLICATION: CAS 
WHEN: Sat Nov 09 11:14:54 CET 2013 
CLIENT IP ADDRESS: 127.0.0.1 
SERVER IP ADDRESS: 127.0.0.1 
============================================================= 

正如你所看到的,CAS產生TGT:

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

,並嘗試檢索:

 
TGT-1-KYSi1x1t1MlcefajmccwatceNEqMprKj7j5ZpVDJwtJOf5OSgA-http 

我找到了一種解決方法,使用從$ {host.name}將bean DefaultUniqueTicketIdGenerator的value屬性更改爲不帶字符':'和'/'的字符串。

我不會更改cas配置,因爲它被很多應用程序使用並部署在不同的環境中。 爲什麼cas中的jboss不能像tomcat一樣工作? 我錯過了一些配置嗎?

+0

我已經調試過cas代碼,並且cookie被瀏覽器發送正確。該cookie是在org.jasig.cas.web.support.CookieRetrievingCookieGenerator類中使用sprinframework org.springframework.web.util.WebUtils.getCookie的實用程序方法檢索的,它調用標準的HttpServletRequest。我想這個問題是在JBoss容器中,而不是在CAS中。 – lquitadamo

回答

1

host.name屬性通常只用於生成故障單,並且不要求它實際上是主機名。它僅用於確保門票是獨特的,特別是在羣集CAS環境中時。

嘗試刪除host.name的協議和端口組件,因爲它看起來在回程中冒號未被正確處理。

你可以在CAS手冊中看到它在https://wiki.jasig.org/display/CASUM/Clustering+CAS處使用。

+0

這是我實際的解決方法,但我不會更改cas配置。 這裏記錄的問題是https://issues.jboss.org/browse/JBAS-7372。 – lquitadamo