特定虚拟主机的 Tomcat 8 管理员用户

标签 tomcat virtualhost tomcat8

我有两个虚拟主机,每个主机都部署了管理器应用程序。 还在 Tomcat 8.0\conf\tomcat-users.xml 中添加了一个具有 manager-gui 角色的用户 此用户能够访问两个主机的管理器应用程序。有什么方法可以将管理员用户限制为特定主机?

最佳答案

您可以在 [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 中的 login-config -manager/WEB-INF/web.xml 使用基于 FORM 的身份验证,并在 Context 元素中包含数据源 Resourcehttps://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html

关于特定虚拟主机的 Tomcat 8 管理员用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991181/

相关文章:

java - tomcat如何知道提供哪个证书

php - 在 MacOS Sierra 10.12.1 上安装/卸载 Apache2

apache 虚拟主机和 "Dynamic"域

apache - 使用具有自定义主机名的 VirtualHost 时调试 400 (apache)

java - ojdbc8 jar 未加载到 Tomcat8 中

spring-boot - Spring Boot 应用程序中的 Tesseract 为日语提供了无意义的结果

java - Tomcat 7.0.54 JVM 崩溃

java - 如何在 Windows 7 中设置 CATALINA_HOME 变量?

java - 如何更新TOMCAT8中的UNICODE版本

java - 如何将默认端口号更改为 Tomcat 端口号 8080?