【问题标题】:Tomcat 7.11 JDBCRealm and UserDatabaseRealm dont work togetherTomcat 7.11 JDBCRealm 和 UserDatabaseRealm 不能一起工作
【发布时间】:2011-12-24 14:38:43
【问题描述】:

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

要在 netbeans (7.0) 中使用 Tomcat,我必须创建一个管理脚本角色的帐户。除了与 Tomcat 经理一起工作外,我还需要另一个角色。这对我来说是个大问题,因为我用于 JDBCRealm 的表是来自存储用户和角色的实际表的视图,我不想将这两个角色都存储在我的程序使用的同一个数据库中。

有没有办法让 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 只使用他在文件中找到的最后一个。他们分开工作很好

【问题讨论】:

  • 理论上,您可以创建自定义领域。
  • 我会考虑的。顺便说一句,您的博客规则。我在那里找到了很多问题的答案

标签: security tomcat tomcat7 realm jdbcrealm


【解决方案1】:

使用CombinedRealmdocjavadoc):

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

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

【讨论】:

  • 是的,我使用的是 LockOutRealm,但用户名在不同领域中不是唯一的。我确保我的程序不会使用与 tomcat-users.xml 中相同的名称。现在作为一个魅力。非常感谢
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 2014-01-07
  • 2019-08-17
  • 2016-11-23
  • 2019-02-18
  • 2015-05-16
相关资源
最近更新 更多