Tomcat 8管理应用程序未提示输入用户名和密码,返回403访问被拒绝。

67

我按照这个链接的说明安装了Tomcat 8,并且拥有以下的tomcat-users.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-gui"/>
  <role rolename="manager-script"/>

  <user username="notadmin" password="not_real_pass" roles="manager-gui"/>
  <user username="cargo" password="not_real_pass" roles="manager-script"/>
<tomcat-users/>

当我尝试访问管理应用程序时,我会被拒绝并收到403错误,没有提示输入用户名和密码。

我在配置中漏掉了什么?

编辑1:添加完整的xml文件。


我成功的方法是 mv manager manager.bak; rsync -a manager.bak manager - Sridhar Sarnobat
你可以关注这个帖子。 https://dev59.com/rVoV5IYBdhLWcg3wGbjT#57746102 - Md. Sajedul Karim
17个回答

2

我愚蠢地取消了默认配置,其中包含像“”这样的密码。Tomcat无法解析此文件(由于“<”),然后您添加的任何其他配置都将无法工作。


2
在尝试了这么多其他方法之后,我终于找到了问题所在。我只是取消了其他默认用户的注释,没有意识到“<必须更改>”默认密码中的“<”符号会破坏我的新用户。这对于Apache来说真的很糟糕。 - Fixee

2
在我的情况下,问题出在web.xml中定义的安全限制。请确保它们与您在tomcat-users.xml文件中使用的角色相同。
例如,这是一个开箱即用的标签,将与标准的tomcat-users.xml一起使用。
 <security-constraint>
    <web-resource-collection>
      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
      <url-pattern>/html/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-gui</role-name>
    </auth-constraint>
  </security-constraint>

在我的情况下,管理员使用了不同的角色名称,这导致我无法访问经理。

0

正确答案就像@JaKu指出的那样。Tomcat将访问本地主机限制在安全范围内。这是应该的。端口转发到Tomcat是正确的做法,最好在SSH等安全环境下进行。


0

我按照相同的教程操作,但几个月后当我尝试使用管理器应用程序时,出现了“403访问被拒绝”的奇怪错误。在这种情况下,我在地址栏中使用了ipaddress:8080,但Tomcat Manager App没有提示输入用户名/密码。在localhost:8080的情况下,错误是“401”,会显示一个对话框要求输入用户名和密码,但用户不被识别。

我尝试了所有之前的建议/解决方案,但都没有成功。 我发现唯一的方法是重新重复整个教程,并覆盖文件。完成后,我再次在webapps目录中找到了旧的部署项目。现在Apache Tomcat/8.5.16 Manager App再次正常工作。我不知道发生了什么,因为我是Tomcat用户的新手,也不理解。


0

我知道这个问题是关于Tomcat 8 Manager的。但是我在Tomcat 10上遇到了一个问题,解决方法是取消注释{tomcat-install-dir}/conf/tomcat-users.xml中的用户名adminrobot

 <user username="admin" password="password" roles="manager-gui"/>
 <user username="robot" password="admin" roles="manager-script"/>

保留其他行的注释


0

我必须在版本9中添加manager-guimanager-script角色才能使其工作。

在获得MangerApp访问权限后,尝试上传.war文件时,我遇到了异常情况。

org.apache.tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException

我能够通过这个post的答案解决问题。

要获取Host Manager的访问权限,请查看post


-1

在docker中安装tomcat时我遇到了同样的问题。

我通过将"^.*$"添加进去替换掉"127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1|123.123.123.123"解决了这个问题。

重启tomcat即可。


1
我认为你的解决方案有两个问题:1)你没有解释 ^.*$ 的作用,只是告诉人们添加它。2)^.*$ 可以被认为是不好的实践,因为你基本上允许任何 IP 地址访问你的 Tomcat 服务器。也许你需要添加 ^.*$ 因为你正在使用 Docker,但你至少应该解释一下为什么。 - kimbaudi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接