25

我正在尝试登录到 Mac OS X 10.7 的 Tomcat 7.0.22 中的 Manager App。这是我得到的错误: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>
4

20 回答 20

28

好的,我也有这个错误。找不到错误,找不到错误,找不到错误。我的“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>
-->

哦!

所以:不要忘记删除“<!--”和“-->”。

于 2012-06-12T20:46:47.587 回答
18

对不起,我不得不问一个显而易见的问题:你重启了Tomcat吗?

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

<user name="tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
于 2011-10-14T05:50:07.840 回答
9

检查您的浏览器。

我在 Windows 上本地运行 tomcat,并尝试使用 Chrome 登录。上述建议似乎都不起作用。最后一时兴起,我尝试了 Firefox 并得到了登录提示!我重新启动 Chrome 并再次尝试,仍然没有。看来我们的网络政策与 Chrome 发生了冲突——可能阻止了弹出的登录对话框。

于 2018-06-22T15:57:59.847 回答
8

我也遇到了这个问题。我的 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>
于 2014-03-26T02:06:18.663 回答
7

为了更清楚起见,这里是您需要添加到 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>
于 2012-10-22T15:32:35.280 回答
4

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

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

于 2013-07-29T19:42:33.387 回答
4

检查 server.xml 中的确切行

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

导航深度

于 2013-10-31T05:56:21.717 回答
3

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

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

对于经理应用程序:

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

对于主机管理器应用程序:

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

在这之后你应该准备好了。

于 2016-10-25T17:29:25.547 回答
3

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

于 2017-01-26T07:26:33.517 回答
1

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

<Connector port="8088" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />
于 2017-10-01T16:01:51.797 回答
0

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

于 2012-06-01T20:40:20.380 回答
0

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

于 2014-09-04T14:06:33.380 回答
0

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

于 2015-12-08T12:59:00.373 回答
0

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

@swapnil chaudhari 关于应用程序中 IP 地址限制的回答META-INF/context.xml也很有帮助,但是我发现覆盖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>

docBase是相对于appBase。在/opt/tomcat/webapps/MyUniqueHost中,我有一个指向由我系统的包管理器(基于 Debian)安装的管理器应用程序的符号链接,它位于/usr/share/tomcat8-admin/manager. 这些符号链接允许我在Hosts不复制管理器应用程序的情况下使用管理器应用程序。

于 2017-11-16T22:37:07.257 回答
0

只是在@David的回答中添加一些信息:

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

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(未测试)。
  • 关注这个答案
  • 也许是具有权限意识的编辑器?
于 2018-06-21T06:20:35.753 回答
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>

我遇到了类似的问题,尽管多次重新安装/配置 Google Chrome,但我仍然无法在 2019 年 5 月 14 日上午 10:30 CST 使用 Google Chrome(版本 73.0.3683.103)登录。

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

于 2019-05-14T15:37:08.437 回答
0

因此,如果没有其他方法适合您,请在此处检查

我用以下行弄乱了我的 server.xml

 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="jdbc/myapp"/>

这里应该永远是resourceName="UserDatabase"

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

我错误地认为它与我的应用程序数据库有关并已对其进行了配置。这是 tomcat 用户数据库,而不是您的应用程序所拥有的数据库。

于 2021-04-20T10:39:37.967 回答
-1

我试图在 tomcat-users.xml 中将用户名添加为 tomcat,这已经是一个角色并且它不起作用。然后我给用户名作为管理员,它工作正常..:)

于 2015-06-23T16:56:07.113 回答
-1

关闭tomcat

将下面的评论完整内容粘贴到 tomcat-users.xml 并保存

启动tomcat

现在构建它应该可以工作,我为带有 Jenkins 和 git 部署的 windows OS 做了通过 tomcat7

<?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>
于 2015-09-24T09:11:30.523 回答
-1

我使用了一个特殊的复杂密码,里面有很多奇怪的字符。只需将其恢复为常规密码并正常工作。

于 2016-06-22T10:25:58.070 回答