Tomcat 7.11 JDBCRealm和UserDatabaseRealm不能一起工作

时间:2011-11-08 16:14:48

标签: security tomcat tomcat7 realm jdbcrealm

我正在尝试将容器管理安全性设置为我的Web应用程序领域(JSF 2.1 + hibernate)。我注意到Tomcat 7一次只能使用一种类型的域。

要在netbeans(7.0)中使用Tomcat,我必须创建一个管理员脚本角色。除了使用Tomcat管理器之外,我还需要另一个角色。这对我来说是个大问题,因为我用于JDBCRealm的表是来自存储用户和角色的实际表的视图,我不希望将这两个角色存储在我的程序使用的同一个db中。

有没有办法让JDBCRealm和UserDBRealm协同工作?那将是一种解脱。

这是来自server.config的代码:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

<Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost:3306/realm?user=login&amp;password=pass" 
    userTable="users"
    userNameCol="user_name"
    userCredCol="user_pass"
    userRoleTable="user_roles" 
    roleNameCol="role_name" /> 

tomcat只使用他在文件中找到的最后一个。他们工作得很好

1 个答案:

答案 0 :(得分:1)

使用CombinedRealmdocjavadoc):

  

包含一个或多个领域的领域实现。认证   按照配置的顺序尝试每个领域。如果有的话   领域对用户进行身份验证,然后验证成功。什么时候   结合领域用户名在所有组合中应该是唯一的   领域

也许您已经在使用LockOutRealmdocjavadoc),它是CombinedRealm的子类,它位于Tomcat的默认配置中。