我在互联网上找不到任何相关内容,所以希望这里的专家可以帮助回答我的问题。
我在测试服务器上设置了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的访问权限有限。
有可能实现这样的目标吗?如果有,怎么样?如果不是,那么可接受的妥协是什么?
答案 0 :(得分:1)
如果你找不到这个,你看起来并不是很难。它位于Tomcat用户指南的“Manager”部分:
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"/>
现在,修改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本身为了获得上面配置的那些功能。