LockOutRealm 是一个 Tomcat 的 Realm 实现,它扩展了 CombinedRealm,假如在某一段时间内出现很多验证失败,则它能够提供锁定用户的功能。
为了确保操作的正确性,该 Realm 允许出现较合理的同步。
该 Realm 并不需要对底层的 Realm 或与其相关的用户存储机制进行任何改动。它会记录失败的登录,包括那些因为用户不存在的登录。为了防止无效用户通过精心设计的请求而实施的 DOS 攻击(从而造成缓存增加),没有通过验证的用户所在列表的容量受到了严格的限制。
子 Realm 是通过在定义 LockOutRealm 的 Realm
元素中内嵌 Realm
元素来实现的。验证操作会按照 Realm 元素的叠加顺序来逐个进行。对逐个 Realm 进行验证,从而就能充分证明用户的身份。
为了配置 CombinedRealm,需要创建一个 <Realm>
元素,并将其内嵌在 <Engine>
或 <Host>
元素中的$CATALINA_BASE/conf/server.xml
文件内。同样,你也可以将其内嵌到 context.xml
文件下的 <Context>
节点。
下面是 server.xml 中的一段代码,为 UserDatabaseRealm 添加了锁定功能。
<Realm className="org.apache.catalina.realm.LockOutRealm" >
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>