• 收藏
  • 加入书签
添加成功
收藏成功
分享

Tomcat用户角色分配与设置研究

秦毅
  
速读·中旬
2018年6期

摘 要:Tomcat作为Java技术方向使用最广的服务器器之一,其自身所带的Tomcat Manager用来对服务器和部署在服务器上的web应用进行统一而有效的管理。拥有适当的用户角色是登陆Tomcat Manager的前提,只有具有相应的角色权限,才能在权限所允许的范围内访问Tomcat服务器提供的接口,执行部署在服务器上的web应用。

关键词:部署;权限;接口

1 引言

默认情况下,Tomcat Manager是处于禁用状态,既是说,Tomcat Manager需要以用户角色进行登陆并授权才能使用其角色对应的功能。在Tomcat第7版之后,Tomcat没有分配任何默认的用户,对Tomcat中包含的角色的认知和配置其所属的用户成为访问Tomcat Manager的重要一个步骤。

2 Tomcat角色概述

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,依照原Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。Tomcat Manager根据管理的对象不同,提供了6种常用的角色,分别是:manager-gui,manager-status,manager-script和manager-jmx、admin-gui、admin-script。

3 Tomcat下用户角色配置及应用

3.1 Realm(域)

Tomcat使用Realm来实现对特定资源进行访问权限的设定,Realm类似于某些系统中的Role(角色)或Group(组),对应着一定的系统资源。

Tomcat提供3种Realm,通过不同渠道和方式来验证访问部署在服务器上的某个web应用的用户是否具有指定的权限。

JDBCRealm用来将用户信息保存在数据库了,通过JDBC纯Java驱动访问数据库的方式获取用户信息,包括角色、用户名及密码的关联信息,并进行验证。

JNDIRealm则将用户信息保存在基于LDAP(轻量级目录访问协议)等目录服务的服务器中,通过JNDI(Java命名和目录接口)提供的API从LDAP服务器中获取用户信息并验证。

MemoryRealm则是实现方式最简单一种。Memory Realm把用户信息保存在\conf\tomcat-users.xml文件中;在对用户进行验证时,将会从tomcat-users.xml中提取用户信息。Host Manager和Manager App使用此种Realm。

3.2 MemoryRealm具体实现

在tomcat-user.xml文件中并没有默认的角色和用户信息,所有的角色和用户信息都用“<!-- -->”进行了注释。其中“manager-gui”角色用来操作/manager/html目录下的web应用程序,如果操作者需要使用这个应用,则需要定义一个指定角色为manager-gui,并包含用户名和密码的用户。而这个用户尽可能的不要使用在该xml文档中注释过的用户名,因为这些用户信息有可能和tomcat提供的web应用案例中的用户信息混淆。

3.3 角色应用

tomcat-users.xml文件设置了角色,使用这些角色名和权限的前提条件是在包含它们的/webapps目录下的某个web应用的web.xml中声明。在对应的web.xml文件中,auth-constraint元素下的role-name子元素起到了对tomcat-user.xml文件定义的角色信息进行调用的职责。可以通过一个或多个role-name子元素调用所需的角色,也可以通过指定All Role来获取所有在tomcat-user.xml中定义的角色。

根据tomcat在/webapps目录下提供的host-manager和manager做用户角色应用的进一步研究。在host-manager的web.xml中的元素下,作为的子元素指定URL的访问接口。一个指定一种访问接口,而 的另一子元素提供了来指定访问该接口所必须具有的角色权限。

4 总结

Tomcat作为一款灵巧的HTTP服务器,目前为止已经推出了第9版,支持Java8及后续版本,而现阶段使用量最多的8.0.x版和8.5.x版,支持Java7及后续版本。然后版本的更替并没有使得tomcat中用户角色和权限的配置改变其原有的地位和重要性,换句话说,只要tomcat包含Manager App和Host Manager两款web“原生”应用,用户权限则一直会是一个需要研究和讨论的议题。

参考文献

[1]维基百科Apache Tomcat.[EB/OL].http://zh.wikipedia.org/wiki/Apache_Tomcat,2013,6.

[2]孙卫琴.Tomcat与Java Web开发技术详解(第2版)[M].电子工业出版社,2009,1.

[3]Budi Kurniawan著,曹旭东译.深入剖析Tomcat[M].机械工业出版社,2012,1.

[4]Tomcat官方文档.Apache Tomcat Versions.[EB/OL].http://tomcat.apache.org/whichversion.html,2017,6.

*本文暂不支持打印功能

monitor