LockOutRealm 是一個 Tomcat 的 Realm 實現,它擴展了 CombinedRealm,假如在某一段時間內出現很多驗證失敗,則它能夠提供鎖定用戶的功能。
為了確保操作的正確性,該 Realm 允許出現較合理的同步。
該 Realm 并不需要對底層的 Realm 或與其相關的用戶存儲機制進行任何改動。它會記錄失敗的登錄,包括那些因為用戶不存在的登錄。為了防止無效用戶通過精心設計的請求而實施的 DOS 攻擊(從而造成緩存增加),沒有通過驗證的用戶所在列表的容量受到了嚴格的限制。
子 Realm 是通過在定義 LockOutRealm 的 Realm 元素中內嵌 Realm 元素來實現的。驗證操作會按照 Realm 元素的疊加順序來逐個進行。對逐個 Realm 進行驗證,從而就能充分證明用戶的身份。
為了配置 CombinedRealm,需要創建一個 元素,并將其內嵌在 或 元素中的 $CATALINA_BASE/conf/server.xml 文件內。同樣,你也可以將其內嵌到 context.xml 文件下的 節點。關于 LockOutRealm 中的屬性定義可參看 Realm 配置文檔。
下面是 server.xml 中的一段代碼,為 UserDatabaseRealm 添加了鎖定功能。
<Realm className="org.apache.catalina.realm.LockOutRealm" >
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/></Realm>