特定虚拟主机的 Tomcat 8 管理器用户
Posted
技术标签:
【中文标题】特定虚拟主机的 Tomcat 8 管理器用户【英文标题】:Tomcat 8 manager user for specific Virtual host 【发布时间】:2016-03-03 15:37:11 【问题描述】:我有两个虚拟主机,每个主机都部署了管理器应用程序。 在 Tomcat 8.0\conf\tomcat-users.xml 中还添加了一个具有 manager-gui 角色的用户 此用户能够访问两个主机的管理器应用程序。有什么方法可以将管理员用户限制为特定主机?
【问题讨论】:
不确定是否可以,因为我相信您无法更改经理角色。然而,在设置新的 Tomcat 虚拟主机时,我总是做的第一件事是为每个管理器应用远程地址过滤阀。这允许仅从为该经理列出的 IP 地址访问每个经理,这是一个巨大的安全改进。 @acdhirr 我已经启用了基于 IP 的访问。此外,我不是试图创建/更改角色,只是确保特定用户可以访问特定的虚拟主机。 【参考方案1】:您可以为[tomcat_home]/conf/Catalina/[hostname]/manager.xml
中的每个上下文定义一个Realm
<Context docBase="$catalina.home/webapps/manager">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="userDatabase_2"/>
<Context>
然后在server.xml
中为每个上下文添加一个额外的资源,指向另一个tomcat-users.xml
文件:
<Resource name="userDatabase_2" auth="Container"
type="org.apache.catalina.UserDatabase"
description="another user database"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="/conf/tomcat-users-2.xml" />
我必须承认我没有彻底测试过这个。即使它可能有效,也不建议在生产系统上使用 UserDatabaseRealm。
例如,如果您更喜欢使用DataSourceRealm
的基于表单的身份验证,您可以将[tomcat_home]/webapps/host-manager/WEB-INF/web.xml
中的login-config
更改为使用基于表单的身份验证,并在Context
元素中包含数据源Resource
。 https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html
【讨论】:
【参考方案2】:首先,在[tomcat_home]/conf
中创建一个新的用户xml 数据库文件,我们称之为tomcat-users-2.xml
。
将以下条目添加到tomcat-users-2.xml
文件中:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<user username="[$yourUsername]" password="[$yourPassword]" roles="tomcat,manager-gui"/>
</tomcat-users>
请注意,您可以在<tomcat-users>
中添加多个用户标签
然后在您的[tomcat_home]/conf/server.xml
文件中,找到<GlobalNamingResources>
标签并添加(在其中):
<Resource name="UserDatabase2" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users-2.xml" />
将以下代码放在您要限制用户使用的应用的<Host ...></Host>
标记中:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase2"/>
最后,您必须重新启动 Tomcat 才能使更改生效。
【讨论】:
以上是关于特定虚拟主机的 Tomcat 8 管理器用户的主要内容,如果未能解决你的问题,请参考以下文章