Tomcat 8.0-tomcat-users 文件被忽略,无法限制对管理器应用程序的访问

Tomcat 8.0-tomcat-users 文件被忽略,无法限制对管理器应用程序的访问

我的 tomcat 服务器目前正在运行不受保护的管理器应用程序。我们希望继续将其作为启动、停止和部署应用程序的主要方式。

我们的 tomcat-users 文件如下所示:

<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">
<user username="tcadmin" password="P98ohnoes" roles="admin-gui,manager-gui" />    

</tomcat-users>

经过与多人测试后,我们发现:

http://服务器名称:8080/manager

为他们加载管理器界面,无需密码质询。

我错过了什么?

我们在 Windows Server 2012 R2 的端口 8080 上运行此程序,同时在端口 80 上运行 IIS。

我尝试过重启服务器,并检查了我们的开发和 QA 服务器,以确保 server.xml 和 tomcat-users.xml 以及 web.xml 文件都一致,没有发现任何异常。在这些服务器上,安全性均正常。它们在端口 80 上运行在 Windows 7 64 位上,没有其他 Web 服务器同时运行。

更新

我从 Java Ranch 的 Tim Holloway 那里了解到,我们应该关注 server.xml 文件中的 GlobalNamingResources 配置。我已查看并确认它与我们的工作服务器配置相匹配。

<GlobalNamingResources>
<!-- Editable user database that can also be used by
     UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" 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.xml" />
</GlobalNamingResources>

和境界:

<Realm className="org.apache.catalina.realm.LockOutRealm">
    <!-- This Realm uses the UserDatabase configured in the global JNDI
         resources under the key "UserDatabase".  Any edits
         that are performed against this UserDatabase are immediately
         available for use by the Realm.  -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

我还按照 Tim 的建议检查了 Tomcat UserID 对 /conf/tomcat-users.xml 的访问权限,我们在系统登录下将其作为服务运行,该系统登录对该文件具有完全控制权限。

然而,重启后安全性似乎被忽略了。

答案1

Java Ranch 的 Tim Holloway 提供的解决方案是简单地替换 webapps 目录中的 manager 文件夹。显然那里做​​了一些未记录的更改,不确定是什么,这导致了我们的问题。

相关内容