【问题标题】:Apache Tomcat/8.5.3 Manager App 403 errorApache Tomcat/8.5.3 Manager App 403 错误
【发布时间】:2016-11-05 11:31:03
【问题描述】:

我在 aws 上的 ubuntu 实例上运行了 tomcat,我可以成功访问 If you're seeing this, you've successfully installed Tomcat. Congratulations! 页面,但是当我点击 Manager App 时,我会立即导航到 403 Access Denied 页面。

我已经编辑了tomcat-users.xml 文件,使其具有管理器gui 角色,甚至使用户也拥有管理器状态、管理器脚本。

然后我使用bin/shutdown.sh 关闭服务器,导航到该页面以检查它是否确实已关闭,然后使用bin/startup.sh 重新启动它。

但每当我点击那个Manager App 按钮时,它甚至都不会弹出用户名/密码框,而是直接进入403 页面。

我还缺少其他东西吗?

编辑:这是我的整个用户 xml 文件

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="admin" password="myPassword" roles="manager-gui,manager-status,manager-script"/>

</tomcat-users>

【问题讨论】:

  • user.xml 接缝对我来说没问题。你换对了吗?
  • @DiogoSantana 我想是的,我不认为会有另一个。有没有办法可以查看是否有多个?
  • 顺便问一下,你试过 Psi-probe 代替 Tomcat Manager 吗? github.com/psi-probe/psi-probe
  • 这取决于你的ubuntu配置...我不使用ubuntu
  • @DiogoSantana 不,我不知道,但我会看看。

标签: tomcat amazon-web-services tomcat8


【解决方案1】:

这帮助我让它工作。 Tomcat manager never asking me ID/PASSWORD

需要将 manager.xml 添加到 conf/Catalina/localhost

根据文档:

“默认的 Tomcat 安装包括 Manager。要将 Manager Web 应用程序上下文的实例添加到新主机,请在 $CATALINA_BASE/conf/[enginename]/[hostname] 文件夹中安装 manager.xml 上下文配置文件”

以我为例,我有这个路径:/opt/tomcat/conf/Catalina/localhost

manager.xml 示例

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>

【讨论】:

  • 假设您已将角色和用户添加到 tomcat-users.xml 文件中。您可以使用这个技巧通过 Dockerized 的 tomcat 服务器访问管理器!在 docker 文件中,从 'FROM tomcat:9.0.14-jre11-slim' 之类的 tomcat 基础映像开始,然后将上述行的文件夹 echos 创建到 manager.xml 文件中。 Github Gist gist.github.com/craigtmoore/b519399d8ce8ba4ae9e450caee287d70
【解决方案2】:

我相信解决此问题的另一种方法是编辑应用程序中默认存在的 context.xml 文件:

$CATALINA_HOME/webapps/manager/META-INF/context.xml

在 Tomcat 8.5 之前,这里的 Valve 被注释掉了:

<Context antiResourceLocking="false" privileged="true" >
  <!--
    Remove the comment markers from around the Valve below to limit access to
    the manager application to clients connecting from localhost
  -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
</Context>

但在 8.5 中似乎默认没有注释。如 8.5x 迁移指南中所述,https://tomcat.apache.org/migration-85.html#Migrating_from_8.0.x_to_8.5.x

从 8.0.x 迁移到 8.5.x

本节列出了 8.0.x 和 8.5.x 之间的所有已知更改,这些更改可能会在升级时导致向后兼容性问题。

...

网络应用程序

Manager 和 HostManager Web 应用程序默认配置有 RemoteAddrValve,它将对这些应用程序的访问限制为来自 localhost 的连接。


所以,最重要的是,我认为您可以调整应用程序中的 context.xml,或者创建一个新的 manager.xml 文件并调整该上下文元素,如上所述。

【讨论】:

  • 此解决方案适用于访问 Tomcat Web 应用程序管理器localhost:8080/manager/html。为了还可以访问 Tomcat 虚拟主机管理器localhost:8080/host-manager/html,您还需要编辑$CATALINA_HOME/webapps/host-manager/META-INF/context.xml 并将&lt;role rolename="admin-gui"/&gt;&lt;user username="myuser" password="mypass" roles="admin-gui"/&gt; 添加到tomcat-users.xml。我正在使用 Tomcat 8.5。
【解决方案3】:

您需要为 Manager App 创建一个上下文并允许从 Tomcat 8.5.x 访问

在您的 $CATALINA_BASE/conf/Catalina/localhost/ 主页下创建文件 manager.xml

manager.xml 内容,注意我的源是 172.31.254.37(我的电脑),把这个改成你的源:

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="172\.31\.254\.37" />
</Context>

确保您的用户/角色在$CATALINA_BASE/conf/tomcat-users.xml中定义

<user username="tomcat" password="tomcat" roles="manager-gui,manager-status"/>

亲切的问候,

雅克·德·雅格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多