password=”tomcat”
roles=”tomcat,role1”/>
(主要由静态文件加载到内存中)
JDBCRealm
Server.xml
略
JNDIRealm
Server.xml
略
JAASRealm
Servel.xml,web.xml
java.login.config
略
MemoryRealm
在tomcat-users.xml或其它相同格式文件中
用来查询用户
JDBCRealm的属性:
属性
含义
className
此Realm实现的Java类名;对JDBCRealm而言,必须是org.apapche.catalina.realm.JDBCRealm
connectionName
用来建立JDBC连接的数据库用户名称
connectionPassword
用来建立JDBC连接的数据库密码
connectionURL
用来建立JDBC连接的数据库URL
digest
摘要算法(SHA,MD2或只有MD5)。
默认值是”cleartext”
driverName
JDBC驱动程序的Java类名
roleNameCol
含有角色名(指定给用户)的角色表中的字段名
userNameCol
在用户与角色数据表中,列出用户名的字段名
userCredCol
用户数据表中,列出用户的密码的字段名
userRoleTable
将角色映射至用户的数据表名
userTable
列出用户与密码的数据表名
JNDIRealm的属性:
属性
含义
className
此Realm实现的Java类名;对JNDIRealm而言,必须是org.apapche.catalina.realm.JNDIRealm
connectionName
用来验证只读的LDAP连接的用户名称。
如果未设定,则会建立匿名连接
connectionPassword
用来建立只读的LDAP连接的密码
connectionURL
用来建立LDAP连接的目录URL
contextFactory
用于次连接的JNDI程序厂商的完全限定的Java类名。
digest
摘要算法(SHA,MD2或只有MD5)。
默认值是”cleartext”
roleBase
查询角色信息的LDAP基本目录条目。
如果未设定,默认使用目录范围顶层元素
roleName
搜寻包含角色名的领域属性名
roleSearch
用来执行角色检索的LDAP过滤器表达式。
roleSubtree
如果想要从与用户相关的角色的roleBase属性中以递归的方式检索设定的元素子树,则需设为true。
如果未设定,则导致默认值false只会搜寻最上层
userBase
设定以userSearch表达式搜寻用户的基本元素
userPassword
属性名。
用户目录条目中包含的用户口令
userPattern
用户目录识别名的样式
userRoleName
在用户目录中包含关联用户角色名值得属性名。
JAASRealm的属性:
PS:
JAASRealm是经由JAAS(JavaAuthenticationandAuthorizationService,Java验证与授权服务)验证用户的一种领域实现。
属性
含义
className
Realm实现的Java类名,对JDBCRealm而言,必须是org.apache.catalina.realm.JAASRealm
appName
传给JAASLoginContext构造函数的应用程序名。
userClassNames
代表个别用户的javax.security.Principal类清单,以逗号分隔。
roleClassNames
代表安全角色的javax.security.Principal类清单,以逗号分隔。
useContextClassLoader
告知JAASRealm,或者从前后类加载器加载类,或者从Tomcat自身的类加载器加载类,默认值为true
TOMCAT提供的四种容器管理的安全防护:
名称
解释
基本验证
通过HTTP验证,需要提供base64编码文本的用户口令
摘要验证
通过HTTP验证,需要提供摘要编码字符串的用户命令
表单验证
在网页的表单上要求提供用户密码
Client-cert验证
以客户端数字证书来确定用户的身份
TOMCAT的单次签名功能:
释义:
可以让用户只需验明身份一次,就可以访问虚拟主机上加载的所有Web应用程序。
要求:
主机层加入SingleSignOnvalve元素,在存储的Tomcat6.0server.xml文件中,该元素如下所示:
--SingleSignOnvalue,在web应用程序中共享密码验证文档在/docs/config/valve.html中-->
--
-->
TOMCAT控制会话及会话程序性:
StandardManger:
当server.xml文件中未明确配置时,StandardManager就是默认的Manager。
它有能将所有会话持续性存储在文件系统上的内嵌程序代码,而且只有当TOMCAT正常停止时才会这样处理。
StandardManager的属性:
属性
含义
className
使用的Manager实现名。
对于StandardManager,必须将其设定为org.apache.cataina.session.StandardManager.
distributable
Servlet规范定义了“分布式”Web应用程序的特殊行为,并定义了关于会话数据管理是否启用或者禁用这一行为。
maxActiveSessions
可允许现行会话的最大数,或者采用默认值-1,代表会话数无限制
maxInactiveInterval
该Manager所创建的会话的默认最大闲置间隔(以秒为单位),默认值为60
pathname
当TOMCAT停止时,此Manager存储现行会话的文件名或路径,而当TOMCAT启动时,会从此文件中健在这些会话。
如果未设定,则默认值为SESSIONS.ser。
processExpiresFrequency
该属性定义了TOMCAT进程会话的有效期的挑战性(aggressively)。
algorithm
这一Manager用于产生会话标识符所使用的摘要算法信息。
有效值包括SHA,MD2或MD5。
默认值是MD5
entropy
可以将此设定为任何字符串,而它会用数字产生随机数生成器的种子。
随机数生成器与摘要算法联合使用,能产生安全的随机会话标识符。
默认值是Manager类名的字符串表示。
randomClass
随机数产生器的类名。
默认值是java.security.SecureRandom。
sessionIdLength
该属性设置了Manager产生的会话ID值的长度,不包括任何加载均衡的JVM路由信息,默认值16。
PersistentManager:
另外一个可以使用的Manager,但处于试验阶段,TOMCAT默认不会使用它。
Persistent的属性:
属性
意义
className
使用的Manager类名:
对于PersistentManagers,必须设为org.apache.catalina.session.PersistentManager。
checkInterval
该Manager的会话超时间间隔(以秒为单位)。
默认值是60
maxActiveSessions
可容许现行最大会话的最大数,-1代表无限制,这也是默认值。
minIdleSwap
在调换会话至磁盘之前,此会话必须闲置的最小时间。
这会话必须覆盖maxActiveSessions,以防止再有许多现行会话引起系统震荡(thrash)。
将此属性设为-1(默认值)表示会忽略此参数。
maxIdleBackup
在备份之前,此会话必须闲置的最大时间。
-1表示不进行备份,这是默认值。
maxIdleSwap
在文件交换之前,此会话可以闲置的最大时间(以秒为单位)。
-1表示会话不应该被强迫调换至文件(默认值)。
maxActiveSessions
可容许现行会话的最大数目,-1代表无限制的。
如果超出设定的最大值,则除非一个以上的会话无效,否则不可再创建会话。
默认值为-1。
saveOnRestart
当TOMCAT正常停止及重启动时,是否要存储及重载会话。
默认值是true。
maxInactiveInterval
由此Manager所建会话的默认值最大闲置间隔(以秒为单位)。
默认值为60。
algorithm
此Manager用于建立会话标示符的摘要算法信息。
有效值包括SHA,MD2或MD5。
默认值为MD5。
entropy
可将此属性设为任何字符串,用作产生数字式随机数产生器的种子。
随机数产生器用于与摘要算法代培,以建立安全的会话随机数标识符。
默认值是使用Manager类名的字符串表示。
distributable
Servlet规范定义了“分发式”web应用程序的特殊行为,并定义了关于会话数据管理是否启用或禁止这一行为。
randomClass
随机数产生器的类名。
默认值为java.security.SecureRandom。
sessionIdLength
该属性设置了Manager产生的会话ID值的长度,不包含任何加载均衡的JVM路由信息,默认值是16。
Store在server.xml的两种实现方式:
FileStore与JDBCStore。
示例:
在server.xml中如何配置PersistentManger以便使用FileStore:
FileStore的属性:
属性
意义
className
所用的Store类名;对于FileStores,必须设置为该属性:
org.apache.catalina.session.FileStorefor
Directory
存放会话的目录的文件系统路径名。
这可以是绝对路径
checkInterval
FileStore的后台线程检查超时会话的时间间隔(以秒为单位)。
默认值是60.
JDBC的属性:
属性
意义
className
Store类所用的名称。
对于JDBCStore必须设为org.apache.catalina.session.JDBCStore
driverName
JDBC驱动程序所用的完整Java类名。
默认为org.apache.catalina.session.JDBCStrore
connectionURL
所用的JDBC连接URL
sessionTable
数据库中会话表的名称。
默认为tomcat$sessions。
sessionIdCol
会话表中会话ID的字段名。
默认值是id
sessionDataCol
会话表中会话数据列名。
默认值是data
sessionValidCol
会话表中存储会话有效性的字段名称。
默认值是valid。
sessionMaxInactiveCol
会话表中存储会话最大闲置时间间隔的字段名。
默认值是maxinactive。
sessionLastAcessedCol
会话表中存储会话上次访问时间的字段名。
默认值是lastaccess。
checkInterval
JDBCStore的后台线程检查超时会话的时间间隔(以秒为单位)。
默认值是60
访问JNDI于JDBC的资源:
TOMCAT开发者将相关描述放在server.xml中,然后,JNDI则用来宣召数据库源及其他资源。
当通过JNDI来访问时,这些资源则被称为”范围”。
关闭Servlet自动重载功能:
在Web应用程序的Context元素(在web.xml)中设定reloadable属性,并重启TOMCAT。
定制用户目录:
TOMCAT使用几个特殊的Listener元素,提供两种方式将其映射到每个主机上。
Listener的ClassName属性应该为org.apache.catalina.startup.UserConfig。
而userClass属性则指定众多映射类中的一种。
公共网关接口(CGI):
TOMCAT包含了一个可选的CGIservlet,以便执行遗留的CGI脚本,前提是假设大多数新的后端处理都由用户定义的servlet的JSP来完成。
CGIservlet的初始化参数:
参数名
意义
默认值
cgiPathPrefix
脚本文件的目录
WEB-INF/cgi
clientInputTimeout
放弃读文件输入之前所等待的时间(以毫秒计)input
100
Debug
调试等级
0
在TOMCAT中部署Servlet与JSPWeb应用程序:
在主机下部署Web应用程序(例如)
部署范例:
给配置TOMCAT
编辑server.xml文件,查找到第一个定义的xml元素,然后在它上面追加新的元素就行了,例如:
unpackWARs=”true”autoDeploy=”true”
xmlValidation=”false”
xmlNamespaceAware=”false”?
添加的主目录Context元素。
-->
而且,如果TOMCAT主服务器请求主地址,那么您还应该改变的默认主机名,该参数也在server.xml中:
defaultHost=””>
如果主机仅仅是Tomcat应答请求的众多主机之一,那么最好保留默认设置,即defaultHost=”localhost”·
部署Servlet和JavaServer页
后面有servlet部署的所有可用选项,此处略
ContextXML片段文件部署
如果contextXML片段文件被命名为my-web.xml,在TOMCAT部署和启动该Web应用程序时,它将可通过URLhttp:
//localhost:
8080/my-webapp进行访问。
通过存储于CATALINA_HOME/Catalina/localhost/admin.xml的contextXML元素显式配置二得到:
--
TOMCAT管理web应用程序的Context配置文件。
$Id$
-->
Privileged=”true”
antiResourceLocking=”false”
antiJARLocking=”false”>
--allow=”127.0.0.1”/>
出于明显的安全防护因素考虑,取消下列Valve注释,以限制访问localhost上的Admin应用程序。
您可以在这里增加用逗号分隔的主机列表-->
部署WAR文件之server.xmlContext部署
必须在server.xml中为web应用程序增加Context元素,且必须把Web应用程序的Context元素嵌套在Host容器元素中。
增加后如下:
upackWARs=”true”
autoDeploy=”false”
xmlValidation=”false”
xmlNamespaceAware=”false”>
部署WAR文件纸ContextXML片段部署
通过储存于CATALINA_HOME/conf/Catalina/localhost/admin.xml的contextXML元素显式配置而得到:
Privileged=”true”
antiResourceLocking=”false”
antiJARLocking=”false”>
--allow=”127.0.0.1”/>
热部署
在server.xml文件中创建一个容器元素,并嵌套到可以进行热部署的Host中。
将web应用程序的WAR文件复制到可以进行热部署的Host的appBase中,TOMCAT将部署该文件并启动它。
创建一个contextXML片段文件,且该文件指向该web应用程序的解包目录或WAR文件,并将contextXML片段文件放在CATALINA_HOME/conf/[EngineName]/[HostName]/目录中
ApacheAnt自动化部署
略
TOMCAT的性能调校:
调校服务器的基本步骤:
1.决定需要测量的对象。
2.决定测量的方式。
3.测量。
4.从测量结果中,了解其含义。
5.以预期会提升测量结果的方式来修补系统配置。
6.测量,并与之前的测量结果比较。
7.回到第四步。
略。
与Apacheweb服务器的整合:
将TOMCAT整合到其他Web服务器的方法有多种,但一般不会超出以下几类,下面的顺序按性能递增,但复杂度也递增:
1.以URL连接两个独立Web服务器
2.代理从TOMCAT到Apachehttpd的请求
3.通过mod_proxy代理从Apachehttpd到TOMCAT的请求
4.其他Apachehttpd连接模块,包括mod_jk
略
TOMCAT安全防护:
A.首先,如果再TOMCAT的前端还有另一台WEB服务器(如Apachehttpd),则应确定除了前端WEB服务器之外,不能再含从任何其他机器来的HTTP或者AJP链接。
因此,您可能想把类似于下列内容放到TOMCAT主机的防火墙配置中:
#Allowws-hosttoconnecttoTomcat.
Iptables-AINPUT-ptcp--dport8080--sourcews-h