登录Tomcat的Manager-App时出现401 Unauthorized错误

问题描述 投票:22回答:20

我正在尝试使用Tomcat 7.0.22中的管理器应用程序登录Mac OS X 10.7。这是我得到的错误:http://f.cl.ly/items/421q1K3f1i0X1H1M181v/so.tiff

401 Unauthorized

You are not authorized to view this page. If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.

For example, to add the manager-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above.

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

我已经在我的tomcat-users.xml中添加了这个,仍然没有使用相同的用户名/密码。

<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>
terminal osx-lion tomcat7 manager-app
20个回答
15
投票

对不起,我要问一个明显的问题:你重新启动了Tomcat吗?

如果这不起作用,请尝试在您的角色中添加“admin-gui”:

<user name="tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>

0
投票

我得到了完全相同的错误,它只是在我将连接器端口从8080更改为8081后才开始工作。


0
投票

还要确保已正确设置TOMCAT_HOME以及JAVA_HOME环境变量。


0
投票

在Windows中我有一个为另一个tomcat安装定义的CATALINA_HOME环境变量,所以即使我在新的安装文件夹中使用启动脚本也是如此。所以只是删除CATALINA_HOME解决了我的问题。


0
投票

在server.xml中将端口从8080更改为8088对我有用。请参阅下面的代码

<Connector port="8088" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />

0
投票

在我的情况下,我在<Engine><Host>...</Host></Engine>中有多个context.xml部分,我不得不将<Realm className="org.apache.catalina.realm.LockOutRealm">...</Realm>复制并粘贴到每个<Engine>...</Engine>部分,因为我在每个主机中部署了经理应用程序,这些主机是单独的Engine的一部分。

@swapnil chaudhari关于应用程序的META-INF/context.xml中的IP地址限制的答案也很有帮助,但是我发现在我的服务器的Context中覆盖server.xml更有利。

最后,我的每个Engines都有这样的东西:

    <Engine name="CatalinaMyUniqueEngine"
            defaultHost="MyUniqueHost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="MyUniqueHost"
            appBase="/opt/tomcat/webapps/MyUniqueHost"
            unpackWARs="true" autoDeploy="true">
        <Context path="/manager" privileged="true" antiResourceLocking="false"
                 docBase="manager">
          <!-- Wider allowance than the default.
               Or you can remove to allow all IPs, which probably isn't
               a good idea. -->
          <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                 allow="127\.0\.0\.1|10\.244\.\d+.\d+" />
      </Host>
    </Engine>

docBaseappBase有关。在/opt/tomcat/webapps/MyUniqueHost中,我有一个符号链接到我的系统包管理器(基于Debian)安装的管理器应用程序,它将它放在/usr/share/tomcat8-admin/manager。这些符号链接允许我在所有Hosts中使用管理器应用程序而无需复制管理器应用程序。


0
投票

只是添加一些关于@David回答的信息:

如果你像我一样SFTP到主机,除了tomcat以外的任何用户(例如root),并使用gedit或VS Code这样的通用编辑器编辑tomcat_users.xml,该文件的组将更改为您使用的用户(可能是因为创建了一个新文件)。如下所示:

drwxr-x--- 2 root tomcat   4096 Jun 21 11:41 ./
drwxr-xr-x 9 root tomcat   4096 May 24 14:12 ../
-rw-r----- 1 root tomcat  13531 Apr 28 03:34 catalina.policy
-rw-r----- 1 root tomcat   7202 Apr 28 03:34 catalina.properties
-rw-r----- 1 root tomcat   1400 Apr 28 03:34 context.xml
-rw-r----- 1 root tomcat   1149 Apr 28 03:34 jaspic-providers.xml
-rw-r----- 1 root tomcat   2313 Apr 28 03:34 jaspic-providers.xsd
-rw-r----- 1 root tomcat   3850 Apr 28 03:34 logging.properties
-rw-r----- 1 root tomcat   7511 Apr 28 03:34 server.xml
-rw-r----- 1 root root     2342 Jun 21 11:41 tomcat-users.xml
-rw-r----- 1 root tomcat   2633 Apr 28 03:34 tomcat-users.xsd
-rw-r----- 1 root tomcat 170202 Apr 28 03:34 web.xml

也许我最初的tomcat设置有点随意......但是由于上述行为,tomcat将无法访问已编辑的文件。结果将是401 Unauthorized。

有很多选择可以解决这个问题。我不确定他们中的任何一个是不是最好的做法。

  • 编辑后更改权限(是的确定...)。
  • nano和WinSCP似乎没有遭遇这个问题。
  • SETGID:chmod g + s / conf_folder(未测试)。
  • 关注this answer
  • 也许是一个可以识别权限的编辑器?

0
投票

以下应该适用于“vanilla”安装(或zip / tar存档) - 将tomcat-users.xml替换为(类似于):

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>  
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="abc" password="xyz" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</tomcat-users>

我遇到了类似的问题,但仍然无法使用谷歌浏览器(版本73.0.3683.103)登录日期05/14/2019 10:30 am CST,尽管多次重新安装/配置谷歌浏览器。

我建议,尝试使用不同的浏览器,如Firefox / IE等,如果你遇到这个问题,即使在使用xmls摆弄了很多。


-1
投票

我试图在tomcat-users.xml中添加用户名tomcat,这已经是一个角色而且无法正常工作。然后我给了管理员的用户名,它工作得很好.. :)


-1
投票

关闭tomcat

粘贴下面的注释完整内容到tomcat-users.xml并保存

启动tomcat

现在构建它应该工作,我做了与詹金斯的Windows操作系统和通过tomcat7 git部署

<?xml version="1.0" encoding="UTF-8"?>
-<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script" password="admin" username="admin"/> </tomcat-users>

-1
投票

我使用了一个特殊的复杂密码和许多奇怪的字符。只需将其恢复为常规密码即可。


22
投票

好的,我也有这个错误。找不到bug,找不到bug,找不到bug。我的“tomcat-users”块看起来就像这样。

<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>

最终发现了这个BUG。我一直在XML注释块中编辑XML:

<!--
<tomcat-users>
<role rolename="manager-gui"/>
<user name="tomcat" password="s3cret" roles="standard,manager-gui"/>
</tomcat-users>
-->

DOH!

所以:别忘了删除“<! - ”和“ - >”。


6
投票

我也遇到过这个问题。我的tomcat-users.xml的内容是正确的,但Tomcat无法读取该文件。我把文件的组改成了tomcat7,重新启动了Tomcat,然后瞧!

这是我的tomcat-users.xml的内容:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <user username="admin" password="admin" roles="manager-gui, admin-gui" />
</tomcat-users>

4
投票

为了增加一些清晰度,以下是从Tomcat 7.x开始需要添加到conf / tomcat-users.xml的角色。如果您想保留评论,但这是您在文件中所需的全部内容(使用admin / admin登录):

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>  
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</tomcat-users>

2
投票

我不太可能犯了同样的错误,但是你有几个版本的tomcat(或者已经捏造了安装并且有你需要清理的文件)确保你在正确的文件夹中。

我在C:\ tomcat7 \中查看配置文件,但运行的实际Tomcat位于C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \


2
投票

检查server.xml中的确切行

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

纳瓦迪普


2
投票

检查您的浏览器。

我在Windows上本地运行tomcat,并尝试使用Chrome登录。以上建议似乎都不起作用。终于一时兴起,我尝试了Firefox并获得了登录提示!我重新启动Chrome并再次尝试,但仍然没有。看来我们的网络政策与Chrome有关 - 可能会阻止弹出登录对话框。


1
投票

我有同样的错误然后我在users.xml中更改了密码。它解决了。如果你使用像&@这样的特殊字符。它不起作用。去掉它。


1
投票

如果你在Tomcat 8,你可能会错过以下内容。更新Realmstomcat-users.xml后,您还需要编辑应用程序的context.xml

默认情况下,较新版本的Tomcat将对Manager和Host Manager应用程序的访问限制为来自服务器本身的连接。由于我们在远程计算机上安装,您可能希望删除或更改此限制。要更改对这些的IP地址限制,请打开相应的context.xml文件。

对于经理应用:

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

对于Host-Manager应用程序:

/opt/tomcat/webapps/host-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>

你应该在此之后得到一切。

© www.soinside.com 2019 - 2024. All rights reserved.