2012-04-24 57 views
4

我使用Spring和Apache CXF創建REST Web服務應用程序。我使用x.509證書對用戶進行身份驗證,然後使用自定義授權服務來獲取所有用戶組和詳細信息。我已經實現了一個自定義UserDetailsS​​ervice,它提取用戶信息並填充UserDetails對象。部分填充此對象的過程涉及到對公司授權服務的請求。不幸的是授權服務是一個專有系統,但至少它們提供了一個Java API。除其他外,授權服務返回用戶所屬組的列表。Spring Security使用X.509身份驗證和定期更新授權UserDetails

我仍處於開發階段,但迄今爲止我的觀察似乎表明,初始連接時會調用UserDetailsS​​ervice一次。然後每個請求使用一個緩存的授權對象。

所以我的問題和潛在的問題是......公司政策規定應用程序只允許在一段時間內緩存用戶授權詳細信息。那麼,在刷新它們之前,Spring會保留這些對象緩存多長時間?而且,如何控制這個緩存時間以確保我遵守策略?

回答

2

有提交類似申請的東西票:

的票證中的建議是創建自己的過濾器比Authentication.setAuthenticated財產定期設置爲false ,迫使用戶查找。您可以通過設置較小的會話超時來達到相同效果

+0

感謝您的提示。我修改了_UserDetailsS​​ervice_的實現,使用_EhCacheBasedUserCache_並將TTL屬性設置爲適當的過期值。這需要處理問題的一個部分,即授權服務不再需要經常諮詢。正如帖子中提到的那樣,我還想實施過濾器,以定期檢查用戶會話並在需要時將其過期。從哪裏開始的任何提示?我從來沒有創建過自定義過濾器。謝謝! – Isaac 2012-04-25 18:03:27

+0

我根據另一篇文章的答案找出了問題的其他部分:http://stackoverflow.com/q/10322026/1354698 – Isaac 2012-05-31 23:41:32