我根据this设置了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文件。
答案 0 :(得分:103)
这可能有用
找到CATALINA_HOME/webapps/manager/META-INF/context.xml
文件并在Valve周围添加注释标记
<Context antiResourceLocking="false" privileged="true" >
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
You can find more details at this page.
答案 1 :(得分:13)
对我有用的解决方案是在context.xml
和$CATALINA_HOME/webapps/manager/META-INF
中编辑$CATALINA_HOME/webapps/host-manager/META-INF
个文件,其中我的IP为123.123.123.123
。
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|123.123.123.123" />
</Context>
我在Ubuntu上安装了Tomcat 8.5并编辑了$CATALINA_HOME/conf/tomcat-users.xml
:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="myuser" password="mypass" roles="admin-gui,manager-gui"/>
但是,在编辑localhost:8080/manager/html
文件之前,我仍然无法访问Tomcat Web应用程序管理器(localhost:8080/host-manager/html
)和Tomcat虚拟主机管理器(context.xml
)。
答案 2 :(得分:10)
有用的链接:Access Tomcat Manager App from different host
从Tomcat版本8开始,除了localhost之外,任何人都无法访问manager / html url。
要访问/ manager / html url,您需要在manager app的context.xml中进行以下更改。 1.转到 /apache-tomcat-8.5.23/webapps/manager/META-INF 位置,然后编辑 context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
......
</Context>
答案 3 :(得分:9)
可以找到正确答案here
看起来这个问题可以在unix机器上提到的教程中重现。还注意到作者使用TC 8.0.33
Win(和OSX)没有这样的问题,至少在我的环境中是这样的:
Server version: Apache Tomcat/8.5.4
Server built: Jul 6 2016 08:43:30 UTC
Server number: 8.5.4.0
OS Name: Windows 8.1
OS Version: 6.3
Architecture: amd64
Java Home: C:\TOOLS\jdk1.8.0_101\jre
JVM Version: 1.8.0_101-b13
JVM Vendor: Oracle Corporation
CATALINA_BASE: C:\TOOLS\tomcat\apache-tomcat-8.5.4
CATALINA_HOME: C:\TOOLS\tomcat\apache-tomcat-8.5.4
通过添加角色修改tomcat-users.xml
后,可以在Tomcat Web Application Manager
上访问用户Tomcat/8.5.4
。
答案 4 :(得分:7)
我必须修改以下文件
$CATALINA_BASE/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,如果要授予对特定IP的访问权限,则使用以下值而不是allow="^.*$"
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.11\.234" />
答案 5 :(得分:2)
如果上述情况不适合您,请确保tomcat可以访问webapps下的manager文件夹(chown ...)。消息是完全相同的消息,我花了2个小时才弄明白问题。 : - )
只是为了和我一样来到这里的其他人。
答案 6 :(得分:2)
淡出的回答对我有用。我从8.0.30移动到8.5.5,区别在于&lt; 8.0.30&gt; /manager/META-INF/context.xml中的阀门已经从 tar文件中注释掉但是8.5.5 tar中的取消注释。
我没有在403回复中读到这条重要信息:
默认情况下,只能从运行的浏览器访问Manager 与Tomcat相同的机器。如果您想修改此限制, 您需要编辑Manager的context.xml文件。
也没读过这篇文章:
自r1734267以来,在Manager中默认配置RemoteAddrValve.is 和HostManager Web应用程序。此功能出现在9.0.0.M4中 和8.5.0起。
答案 7 :(得分:1)
我愚蠢地取消注释默认配置,其中包含&#34;&#34;等密码。 Tomcat无法解析此文件(因为&#34;&lt;&#34;),然后您添加的任何其他配置都无法工作 -
答案 8 :(得分:1)
在我的情况下,这是在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>
在我的情况下,管理员使用了不同的角色名称,这阻止了我访问管理员。
答案 9 :(得分:0)
将以下内容复制到文件tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<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">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary. It is
strongly recommended that you do NOT use one of the users in the commented out
section below since they are intended for use with the examples web
application.
-->
<!--
NOTE: The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<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>
我已经测试过,它只是有效!
答案 10 :(得分:0)
我接受了相同的教程,但几个月后我奇怪地得到了错误&#34; 403 Access Denied&#34;同时尝试使用Manager App。在这种情况下,我在地址栏中使用了ipaddress:8080,Tomcat Manager App没有提示用户/密码。如果是localhost:8080错误是&#34; 401&#34;,则会显示询问用户名和密码的对话框,但用户无法识别。
我没有幸运地尝试过所有以前的建议/解决方案。 我找到的唯一方法就是重复整个教程覆盖文件。完成后,我再次找到旧的部署项目到webapps目录。现在Apache Tomcat / 8.5.16 Manager App再次运行。我不知道发生了什么我也不明白,因为我是Tomcat用户的新手
答案 11 :(得分:0)
我必须在版本9中添加 manager-gui 和 manager-script 角色才能正常工作。
在获得MangerApp的访问权限后,在尝试上传.war文件时,我得到了异常
DECLARE @t TABLE (tVal VARCHAR(100))
INSERT INTO @t VALUES('123')
INSERT INTO @t VALUES('123S')
INSERT INTO @t VALUES('A123,123')
INSERT INTO @t VALUES('a123..A123')
;WITH cte (original, tVal, n)
AS
(
SELECT t.tVal AS original,
LOWER(t.tVal) AS tVal,
65 AS n
FROM @t AS t
UNION ALL
SELECT tVal AS original,
CAST(REPLACE(LOWER(tVal), LOWER(CHAR(n)), '') AS VARCHAR(100)),
n + 1
FROM cte
WHERE n <= 90
)
SELECT t1.tVal AS OldVal,
t.tval AS NewVal
FROM (
SELECT original,
tVal,
ROW_NUMBER() OVER(PARTITION BY tVal + original ORDER BY original) AS Sl
FROM cte
WHERE PATINDEX('%[a-z]%', tVal) = 0
) t
INNER JOIN @t t1
ON t.original = t1.tVal
WHERE t.sl = 1
我可以使用此post
的答案解决这个问题要获取主机管理员的访问权限,请检查此post
答案 12 :(得分:0)
正确的答案是@JaKu指出的。 Tomcat限制了对localhost的访问以使其安全。这是应该的。将端口转发到tomcat是正确的做法,最好在SSH之类的安全措施下进行。
答案 13 :(得分:0)
转到并检查是否创建了用户 如果没有,请通过打开/apache-tomcat-9.0.20/tomcat-users.xml中的文件来创建用户 在其中添加一行
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script" />
转到/apache-tomcat-9.0.20/webapps/manager/META-INF/ 打开context.xml 评论上下文标签中的所有内容 例如:
<Context antiResourceLocking="false" privileged="true" >
<!--Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /-->
</Context>
答案 14 :(得分:0)
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="admin" password="admin" roles="tomcat,manager-gui,admin-gui,manager-script,manager-jmx"/>
Close all the session, once closed, ensure open the URL in incognito mode login again and it should start working
答案 15 :(得分:-1)
我在docker中安装tomcat时遇到了同样的问题。 我已经解决了添加“^。* $”而不是“127. \ d +。\ d +。\ d + | :: 1 | 0:0:0:0:0:0:0:1 | 123.123.123.123”< / p>
重启tomcat。