Tomcat 7 Manager - 如何进行身份验证?

时间:2013-02-23 15:36:37

标签: tomcat tomcat7

我正在尝试登录tomcat管理器应用程序,但我无法在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>
<!--
  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.
-->
<!--
  NOTE:  The sample user and role entries below are wrapped in a comment
  and thus are ignored when reading this file. Do not forget to remove
  <!.. ..> that surrounds them.
-->
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>

阅读on the official page我修改了这样的文件但没有结果。

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

5 个答案:

答案 0 :(得分:28)

这似乎是正确的配置。小心不要将角色与空格分开!

<?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>

答案 1 :(得分:8)

接受的答案在一个细节中是错误的,但非常重要 - 管理员的角色之间不应该有任何空格,因为此列表应以逗号分隔(如此处Tomcat 7 Manager can't login所述)。我只是有同样的问题并以同样的方式解决了。

所以,而不是这个(正如一些答案中所建议的那样:

<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>

它必须是这样的:

  <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

所以它应该看起来像这样:

<?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 :(得分:6)

您不应将manager-gui角色与manager-script或-jmx角色结合使用,因为会破坏跨站点脚本保护。最后的经理角色不能像gui角色一样受到保护。

答案 3 :(得分:2)

您是否在conf文件夹的server.xml中配置了数据库域?默认的server.xml已经设置了UserDatabase资源,因此如果您更改了该资源,那么无论您如何设置tomcat-user xml,您都将无法进行身份验证。

在conf / server.xml文件中... 在GlobalNamingResource标记中定义要使用MemoryUserDatabaseFactory的Resource,并在Engine中定义一个Realm以使用UserDatabaseRealm。只需打开原始server.xml(我使用tomcat 7.0.62)并搜索这些名称,您就会看到配置。根据您的应用和需求,您可能需要进行其他更改。

答案 4 :(得分:0)

您已添加管理员角色用户以访问此功能。对于此编辑tomcat-users.xml文件 apache-tomcat-7.0.56-windows-x64\apache-tomcat-7.0.56\conf如果你在Windows上。搜索<role rolename= >行。这可能会评论。添加此代码: -

<role rolename="manager-gui"/>
<user username="your-user-name" password="your-password" roles="manager-gui,manager-script"/>