2009-12-23 49 views
3

我正在嘗試編寫一個LoginModule來驗證Jackrabbit存儲庫的用戶身份。但是,我希望它檢查存儲在存儲庫本身中的憑據。所以問題是,在我的LoginModule中,我必須再次連接到存儲庫,使其成爲一個無限循環。有什麼我可以做的嗎?使用自定義LoginModule登錄到Jackrabbit

回答

4

有一個2種基本方法:

  1. 提供一個管理員登錄到LoginModule的配置了,這樣它總是能夠連接到存儲庫的兔崽子庫。以管理員用戶身份連接時,使用所提供的憑據(對於正在進行身份驗證的普通用戶)查詢存儲庫以便對其進行身份驗證。

  2. 或者讓所有的用戶都使用Jackrabbit登錄設置,所以不要使用管理員登錄連接,而是嘗試使用提供的憑據進行連接,如果連接則用戶連接成功(通過這種方法,我經常將做一個簡單的查詢來仔細檢查連接是否有效,例如在存儲庫中查找用戶的真實姓名)。

在這兩種情況下,登錄模塊應包含直接連接到兔崽子,不應該要求登錄模塊本身連接到存儲庫的代碼。

+0

謝謝。關於1:我們認爲它不安全,因爲有一個具有硬編碼證書的管理員用戶。關於2:我們需要硬編碼所有用戶名(也許是密碼),這是不靈活的。我們選擇使用單獨的存儲庫來存儲用戶憑據,只能從Java代碼中訪問。 – pitr 2010-01-03 23:38:29

1

JeCARS項目中有一個自定義LoginModule(org.jecars.CARS_LoginModule)。它使用硬編碼管理用戶進行第一次訪問,並且由於只能通過servlet訪問存儲庫,因此會執行檢查以防止管理用戶的外部使用。