java – Tomcat 7嵌套CombinedRealm,LockoutRealm和DataSourceRealm

前端之家收集整理的这篇文章主要介绍了java – Tomcat 7嵌套CombinedRealm,LockoutRealm和DataSourceRealm前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在Tomcat 7.0.32中以如下方式嵌套Realms(这里用伪 XML编写):
<CombinedRealm>
  <LockoutRealm>
     <DataSourceRealm/>
  </LockoutRealm>
  <UserDatabaseRealm/>
</CombinedRealm>

这似乎不起作用 – 是否可以将Tomms中的Realms嵌套两个以上级别?我在日志中收到警告:

No rules found matching 'Server/Service/Engine/Realm/Realm/Realm'.

其背后的想法是,Web服务有一些不能被锁定的关键用户(例如,作为DOS)和一些普通用户,这些用户可能拥有较弱的密码,其中lockoutRealm应该是活动的.我相信其他人一直处于这种状况.

如果还有其他方法可以实现这一点(例如LockoutRealm的白名单),请告诉我.

单点登录也是必需的.

我想扩展现有的LockoutRealm代码以及永远不会锁定的帐户列表将是一个选项,但我不是那么热衷于编写我自己的Realm,我宁愿不在该级别上添加自定义代码给Tomcat,因为这将复杂的设置为其他人和每个Tomcat更新它可能会破坏等.

谢谢你的帮助!

这是我的测试配置的server.xml的相关部分:

<Engine name="Catalina" defaultHost="localhost">

  <Realm className="org.apache.catalina.realm.CombinedRealm">

    <!-- Lockout realm for the DB users -->
    <Realm className="org.apache.catalina.realm.LockOutRealm">
      <!-- PRIMARY: DataSourceRealm with user DB -->
      <Realm className="org.apache.catalina.realm.DataSourceRealm"
         dataSourceName="jdbc/authority"
         userTable="user" userNameCol="username" 
         userCredCol="password" digest="SHA"
         userRoleTable="user_role" roleNameCol="rolename" />
    </Realm>

    <!-- FALLBACK:
         This Realm uses the UserDatabase configured in the global JNDI
         resources under the key "UserDatabase".  Any edits
         that are performed against this UserDatabase are immediately
         available for use by the Realm.  -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>

  </Realm>

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <!-- SingleSignOn valve,share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
</Engine>

解决方法

Apache commons-digester用于解析配置文件,因此我怀疑这个特定的用例并不是预期的.

Tomcat的org.apache.catalina.startup.RealmRuleSet.addRuleInstances似乎只能在Realm配置中进行2级深度操作.看起来很简单,可以在那里添加另一层.

我必须看看如何配置消化器以查看是否可以支持任意级别,或者是否必须手动配置某个子集.

随意前往Tomcat users’ list要求进行此类更改.

原文链接:https://www.f2er.com/java/129348.html

猜你在找的Java相关文章