读书人

Tomcat lt;Realmgt;配备

发布时间: 2012-11-03 10:57:42 作者: rapoo

Tomcat <Realm>配置

JDBCRealm 概述

JDBCRealm是tomcat 6 对Realm接口的实现,它通过JDBC驱动程序访问关系数据库。它的遍历配置可以适应于您已有的表和列名,只要您的数据库接口符合下列规范:

1.?必须有一张用户表,包含Realm可以识别的所有合法用户名称的行。?

用户表必须包含至少两列:

??当用户登录时,Tomcat可以识别用户名。

? 当用户登录时,Tomcat可以识别用户密码。

2.?必须有一张用户角色表,包含关联特殊用户的每种合法角色的行。用户有0个,1个或多个角色都是允许的。

用户角色表必须包含至少两列:?

? ?Tomcat可以识别的用户名(和用户表中的相应值一致)。

?? 用户关联的合法角色名。

?

快速入门需要以下步骤设置Tomcat使用JDBCRealm:

1. 创建以上描述中必须的表和列。

2. 配置使用Tomcat的用户名和密码,至少需要有只读权限(Tomcat不会修改表中数据)。

3. 拷贝JDBC驱动程序到$CATALINA_HOME/lib目录。(注意:单纯的放在项目的lib下是不可以的,要放到tomcat的lib目录下)

4. 在您的$CATALINA_HOME/conf/server.xml文件中设置元素,或者通过jndi方式加载项目,则可以在 $CATALINA_HOME/conf/localhost 下增加 项目.xml,此文件里设置元素

5. Realm元素属性要配置JDBCRealm,以下是这个实现支持的参数:

className Realm实现的java全名。在这里必须“org.apache.catalina.realm.JDBCRealm”;

connectionName 建立JDBC连接的用户名;

connectionPassword 建立JDBC连接的密码;

connectionURL 建立JDBC连接的URL;

digest 使用非明文方式保存用户密码的摘要算法。只能输入java.security.MessageDigest支持的算法名称。如果不指定,密码以明文方式保存;

driverName 使用的JDBC驱动程序全名。详细信息请查看您使用的JDBC驱动程序;

roleNameCol 用户角色表中的角色名,包含赋予用户的角色;

userCredCol 用户表中列名,包含用户的密码(可以是明文也可以是密文);

userNameCol 用户和用户角色表中的列表,包含了用户名;

userRoleTable 用户角色表。表中必须有userNameCol和roleNameCol中指定的列;

userTable 用户表。表中必须有userNameCol列;

?

例子:

?

Tomcat6.0+ XXX系统

1. 数据库准备

数据库里建立2张表或者2个视图也可以。(以下以视图为例)

用户表:

create or replace view users as

??? select col1? username, col2? password? from table1

?

用户角色表:

create or replace view roles as
?? select?col1??username,?col3?? role? ?from? table1

?

2.tomcat采用jndi的方式加载系统,所以在conf\Catalina\localhost下增加一个xml文件,文件内容如下:

?

注意:?action="j_security_check" ,该action进行安全检查。(<security-constraint>的作用,该action在web.xml是不用定义的。。。直接用)

?

如本例子,用户表:

username??? password????????????????????????

?test1?????????? 123456??????????????????????

?test2???????????123456

?test3?????????? 123456

.......

用户角色表:

username??????? role

?test1?????????????? guest

?test2???????????????DataManage

?test3?????????????? DataManage

........

?

这样就表示test1用户不能访问系统,只有test2和test3才能访问系统??????

读书人网 >软件架构设计

热点推荐