0

我在互联网上找不到任何关于此的信息,因此希望这里的专家可以帮助回答我的问题。

我已经在我的测试服务器上设置了 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 文件权限的用户。

现在他们具有相同的角色,因此很明显他们在登录时看到相同的 UI,但我只想user1看到部署/上传选项 - 本质上是对 WebApp 管理器的访问受限。

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

4

1 回答 1

1

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

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

使用标准的用户访问角色,您无法做您想做的事情。幸运的是,没有什么能阻止你发明一些东西。

假设您想为deploy和设置不同的角色undeploy。只需tomcat-users.xml像这样添加它们:

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

现在,修改managerwebapp 的 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>的 for/html/*以便具有任何适当角色的用户(例如,仅具有“部署”角色的用户)可以访问 GUI 本身,以便使用上面配置的那些功能。

于 2012-06-07T18:23:19.413 回答