Tomcat Web应用程序管理器 - 是否可以限制每个用户角色可以看到的内容?

时间:2012-06-06 06:54:05

标签: tomcat web-applications access-control

我在互联网上找不到任何相关内容,所以希望这里的专家可以帮助回答我的问题。

我在测试服务器上设置了Tomcat Web应用程序管理器,在tomcat-users.xml中创建了一些角色/用户,如下所示:

<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
<user username="user1" password="password" roles="manager"/>

admin应该拥有WebApp Manager的完全权限,而user1(可能是后续用户)适用于已被授予上传/部署其WAR文件权限的用户。

现在他们拥有相同的角色,所以很明显他们在登录时会看到相同的用户界面,但我希望user1只能看到部署/上传选项 - 基本上对WebApp Manager的访问权限有限。

有可能实现这样的目标吗?如果有,怎么样?如果不是,那么可接受的妥协是什么?

1 个答案:

答案 0 :(得分:1)

如果你找不到这个,你看起来并不是很难。它位于Tomcat用户指南的“Manager”部分:

http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Configuring_Manager_Application_Access

使用标准的用户访问角色,您无法执行您要执行的操作。幸运的是,没有什么可以阻止你发明一些。

假设您要为deployundeploy设置不同的角色。只需将它们添加到tomcat-users.xml,就像这样:

<role rolename="deploy"/>
<role rolename="undeploy"/>

现在,修改manager webapp的web.xml并添加一些允许这些新角色访问某些特定功能的auth-constraints

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Manual Deployment</web-resource-name>
    <url-pattern>/html/deploy</url-pattern>
  </web-resource-collection>
  <auth-constraint>
     <role-name>manager-gui</role-name>
     <role-name>deploy</role-name>
  </auth-constraint>
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Manual Deployment</web-resource-name>
    <url-pattern>/html/undeploy</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>manager-gui</role-name>
    <role-name>undeploy</role-name>
  </auth-constraint>
</security-constraint>

请注意,您还必须修改<web-resource-collection>的现有/html/*,以便具有任何适当角色的用户(例如,仅具有“部署”角色的用户)可以访问GUI本身为了获得上面配置的那些功能。