和大多数Catalina组件不一样的是,Realm有几个标准的实现。所以,必须使用className属性来选择你希望使用的实现。
JDBC Database Realm (org.apache.catalina.realm.JDBCRealm)
JDBC Database Realm将Catalina连接到一个关系数据库,通过正确的JDBC驱动访问,用来查询用户名,密码和他们相关的角色。由于查询是在每次必要的时候完成的,因此数据库的改变会马上反映到用来认证新登录的信息中。 除了用来获取必需信息的数据库表名和列名以外,还有很多附加的属性用来配置到数据库的连接:
属性描述
connectionName | 建立JDBC连接时使用的数据库用户名 |
connectionPassword | 建立JDBC连接时使用的数据库密码 |
connectionURL | 建立数据库连接时传递给JDBC驱动的连接URL |
digest | 用来对数据库中的用户密码编码的“消息摘要”算法的名称。如果没有指定,密码以明文方式存储。 |
driverName | 连接到认证数据库的JDBC驱动的完整的Java类名 |
roleNameCol | “用户角色“表中的列名,包含了指定给对应用户的角色名称。 |
userCredCol | “用户”表中的列名,包含用户的可信数据(比如,密码)。如果设置了digest属性,则假定密码已经用了指定的算法进行编码,否则,假定密码是明文密码。 |
userNameCol | “用户”表和“用户角色”表中的列名,包含用户的用户名 |
userRoleTable | “用户角色”表名,必须包含userNameCol和roleNameCol指定的列。 |
userTable | 用户表,必须包含userNameCol和userCredCol属性指定的列 |
有关使用JDBC Database Realm组件来设置container managed security的更多信息,参考FIXME - Nested pointer into HOW-TO
DataSource Database Realm (org.apache.catalina.realm.DataSourceRealm)
DataSource Database Realm 将Catalina连接到一个关系数据库,通过一个名为JDBC Datasource的JNDI访问,查询用户名,密码以及他们对应的角色。由于查询在每次需要的时候进行,因此数据库的变化会马上反映到用来认证新的登录的信息上。
JDBC Realm使用单个数据库连接。这要求基于realm的认证之间同步,比如,同一时刻只允许一个认证。这对需要大量使用认证的应用程序来说是一个瓶颈。
DataSource Database Realm支持并发的基于Realm的认证,允许JDBC DataSource处理优化问题,比如数据库连接池。
有很多选项可以配置JNDI JDBC Datasource的名字,同时包括用来获取必要信息的数据库表名和列名。
属性描述
dataSourceName | Realm的JNDI JDBC DataSource的名字 |
digest | 用来对存储在数据库中的用户密码编码的消息摘要算法的名称。如果没有指定,假定用户密码以明文方式存储。 |
roleNameCol | “用户角色“表中的列名,包含了指定给对应用户的角色名称。 |
userCredCol | “用户”表中的列名,包含了用户的可信数据(比如,密码)。如果设置了digest属性,则假定密码已经用了指定的算法进行编码,否则,假定密码是明文密码。 |
userNameCol | “用户”表和“用户角色”表中的列名,包含用户的用户名。 |
userRoleTable | 用户角色表名,必须包含userNameCol和roleNameCol指定的列。 |
userTable | 用户表,必须包含userNameCol和userCredCol属性指定的列。 |
有关使用DataSource Database Realm组件配置container managed security的更多信息,参考DataSource Realm HOW-TO。
JNDI Directory Realm (org.apache.catalina.realm.JNDIRealm)
JNDI Directory Realm将Catalina连接到一个LDAP目录,通过正确的JNDI驱动访问。LDAP目录存储了用户名,密码以及他们相应的角色。对目录的修改马上反映到用来认证新的登录的数据上面。 directory realm支持许多使用LDAP进行认证的方法:
- realm可以使用模式来决定用户目录条目的唯一名字(distinguished name),或者搜索目录来定位该条目;
- realm可以将用户条目的唯一名字和用户给出的密码绑定到目录上,对用户进行认证;或者,从用户条目中取出密码,在本地进行比较;
- 在目录中,角色可以以单独的条目存在(比如,用户所属的组条目),或者,角色可以是用户条目的一个属性,或者两种情况都是;
除了到目录的连接,用户从目录中获取信息的元素和属性名称以外,Directory Realm还支持很多其他的附加属性:
属性描述
authentication | 使用的认证类型,字符串类型。可以是“none”,“simple”,“strong”或者提供者定义的其他类型,如果没有值,使用提供者提供的缺省值。 |
connectionName | 创建目录连接使用的目录用户名。如果没有指定,使用匿名连接,这在大多数情况下就足够了,除非你指定了userPassword属性 |
connectionPassword | 创建目录连接使用的目录密码。如果没有指定,使用匿名连接,这在大多数情况下就足够了,除非你指定userPassword属性。 |
connectionURL | 创建目录连接时,传递给JNDI驱动的连接URL。 |
contextFactory | 用来取得JNDI InitialContext的工厂类的Java类名。缺省情况下,假定使用标准的JNDI LDAP提供者。 |
protocol | 使用的安全协议。如果没有指定,使用提供者提供的缺省值。 |
roleBase | 用于角色查找的基准目录条目。如果没有指定,使用目录上下文的顶级元素。 |
roleName | 在角色查找中,包含角色名的属性的名称。另外,在用户条目中,你可以使用userRoleName来指定包含额外角色名的属性名称,。如果没有指定,不搜索角色,角色存在于用户条目中。 |
roleSearch | 用来进行角色查找的LDAP过滤器表达式。使用{0}来代替用户的唯一名称,{1}来代替用户名。如果没有指定,不对角色进行搜索,角色从用户条目中由userRoleName指定的属性得到。 |
roleSubtree | 在查找与用户相关联的角色时,如果想搜索由roleBase属性指定的元素的整个子树,设为true。缺省值为false,只对顶级元素进行搜索。 |
userBase | 在使用userSearch表达式搜索用户的时候的基准元素。如果使用userPattern表达式进行搜索,不使用这个属性。 |
userPassword | 在用户条目中包含用户密码的属性名。如果指定了这个值,JNDIRealm使用connectionName和connectionPassword属性指定的值绑定到目录,取出对应的属性,与被认证的用户给出的值进行比较。如果不指定这个值,JNDIRealm会尝试使用用户条目的唯一名称和用户给出的密码绑定到目录,如果绑定成功,说明认证成功。 |
userPattern | 用户目录条目的唯一名称的模式,{0}代表实际的用户名。在唯一名称包含用户名,其他的项都相同的时候,可以使用这个属性,而不是使用userSearch,userSubtree和userBase. |
userRoleName | 用户目录条目中的一个属性名,该属性包含了零个或多个指定给用户的角色名的值。另外,如果角色以单独的条目存在,可以使用roleName属性来指定属性名,在搜索目录的时候,可以得到这个属性。 如果不指定userRoleName,用户的所有角色通过角色搜索得到; |
userSearch | 搜索用户目录条目时,使用的LDAP过滤表达式,{0}代表实际的用户名,可以使用userSearch,userBase和userSubtree属性一起来代替userPattern搜索目录。 |
userSubtree | 如果希望搜索由userBase属性指定的元素的整个子树,设为true,缺省值为false,即只搜索顶级元素。如果使用userPattern表达式,不使用这个属性。 |
有关使用JNDI Directory Realm组件设置container managed security的更多信息,参考 FIXME - Nested pointer into HOW-TO
Memory Based Realm (org.apache.catalina.realm.MemoryRealm)
Memory Based Realm是一个简单的Realm实现,它从XML文件中读取用户信息,将这些信息标识为内存中的一系列Java对象的集合。这个实现只是用来启动container managed security,而不是用在产品中。所以,当数据文件改变的时候,没有机制来更新内存中用户的集合。
Memory Based Realm实现支持如下的附加属性:
属性描述
pathname | 包含用户信息的XML文件的绝对或者相对路径。XML文件的格式在下面定义。如果没有指定这个属性,缺省值为conf/tomcat-users.xml |
由pathname属性引用的XML文档必须满足如下需求:
- 根元素必须是
<tomcat-users>
- 每个授权用户必须用单个XML元素<user>来标识,嵌套在根元素中
- 每个<user>元素必须具有下列属性:
- name - 用户名(在文件内必须唯一).
- password - 用户密码(明文).
- roles - 用户角色列表,用逗号分开;
关于使用Memory Based Realm组件设置container managed security的更多信息,参考FIXME - Nested pointer into HOW-TO
相关推荐
### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...
在IT行业中,服务器配置是关键的一环,特别是对于使用Apache和Tomcat的环境。Apache作为流行的Web服务器,常与Java应用服务器Tomcat协同工作来处理动态内容。以下是对"Tomcat协同配置参考"的详细说明: 1. **Tomcat...
在tomcat服务器下配置server.xml文件。tomcat启动报错,可参考该文件。
【Tomcat服务器配置详解】 Tomcat是一个基于Java的开源Web服务器,它主要负责运行JSP和Servlet。Tomcat由Apache软件基金会开发,是Java Servlet和JavaServer Pages(JSP)技术的标准实现。虽然Tomcat专注于Servlet...
**JSP环境配置指南——基于Tomcat服务器** JavaServer Pages(JSP)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态网页的生成。配置JSP开发环境通常需要一个Web服务器,如Apache Tomcat...
Tomcat 服务器证书安装配置指南 Tomcat 服务器证书安装配置是一个复杂的过程,需要用户具备一定的 IT 基础知识。本文档旨在提供一个详细的指导材料,帮助用户一步一步地完成证书安装配置。 生成证书请求 在生成...
现在你可以启动Tomcat服务器了: ``` $CATALINA_HOME/bin/startup.sh ``` 如果一切顺利,Tomcat将在8080端口上启动,可以通过访问`http://your_server_ip:8080`来确认。 **7. 配置Tomcat** Tomcat的配置主要涉及...
Tomcat服务器以其小巧、高效和免费的特点赢得了广泛的用户群体。 标题中的"tomcat服务器"指的是Apache Tomcat,它是一个执行Java Servlet和JavaServer Pages(JSP)的服务器,也是Java EE应用程序的容器。Tomcat与...
这个文件包含了Tomcat服务器的所有配置信息。您可能需要修改以下端口: - `Connector port="8080"`:这是HTTP服务的默认端口,可以根据需要更改。 - `Connector port="8005"`:用于Tomcat服务器的shutdown命令,...
Apache 与Tomcat 集成配置 具体可参考 http://blog.csdn.net/heng_ji/article/details/50850253 http://blog.csdn.net/heng_ji/article/details/50849184
- **负载均衡**:如果有多台Tomcat服务器,可以通过Apache实现负载均衡,提高系统可用性。 - **安全性**:确保Apache和Tomcat之间的通信是安全的,避免数据泄露。可以使用SSL/TLS加密连接。 - **日志管理**:集成后...
josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...
1. **server.xml**:这是Tomcat的主要配置文件,定义了服务器的全局属性,包括端口号、连接器、Context(应用上下文)以及全局JNDI资源。例如,你可以在这个文件中更改默认的HTTP监听端口8080。 2. **web.xml**:...
Eclipse有专门的插件(如Tomcat插件)可以无缝地与Tomcat服务器配合,实现快速部署和调试。 总结来说,Apache Tomcat 6.0是一款强大的Java Web应用服务器,支持最新的Servlet和JSP规范,提供了易用的配置、高性能、...
本文将详细介绍如何对刚搭建好的Tomcat服务器进行简单的优化,包括启动内存优化以及线程和连接数的配置优化等方面。 #### 二、启动内存优化 启动内存优化是提高Tomcat服务器性能的重要手段之一。合理的内存设置...
然而,在实际部署过程中,特别是在Tomcat服务器环境下配置该API,可能会遇到不少挑战。本文将详细介绍如何在Tomcat服务器上配置并使用ArcGIS JavaScript API。 #### 二、ArcGIS JavaScript API简介 ArcGIS ...
1. **下载Tomcat服务器** 在配置Tomcat之前,你需要首先从官方网站下载适合你操作系统(例如Windows)的Tomcat版本。通常,Windows用户会选择ZIP包下载,然后解压缩到你想要的位置。这里提供两个链接供参考: - ...
【描述】:Tomcat服务器安装包提供了在本地计算机上安装和配置Tomcat环境的必要文件。这个压缩包包含了一系列的配置文件、可执行脚本以及用于管理Tomcat的文档,使用户能够启动、停止、监控和配置服务器。 【标签】...