一:什么是jdbc安全域?

    我的理解是:验证信息(角色、用户名和密码)通过jdbc桥梁到数据库中去匹配,如果验证信息正确,则让用户访问到受保护的页面、信息等!

 

二:实现步骤如下:---注:本文是将tomcat管理员的角色信息存储到数据库中,进行验证!

 1:数据库采用sqlserver2005

 2:创建数据库名为: zltomcat

 3:创建二张数据库表名称分别为:tomcat_user(用户表)tomat_user_role(角色表)

 4:tomcat_user表结构如下:

create table tomcat_user (

  userName      varchar(15) not null primary key,

  pass          varchar(15) not null

);

   5:tomat_user_role表结构如下:

create table tomat_user_role (

  userName         varchar(15) not null,

  roleName         varchar(15) not null,

  primary key (userName, roleName)

);

 

6:以上字段注释如下:

 username:用户名

    pass: 密码

    roleName: 用户的角色

7:打开~tomcat/conf/ server.xml文件

8:在配置文件Engine节点下添加如下配置文件:

<Realm  className="org.apache.catalina.realm.JDBCRealm"

       driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://127.0.0.1:1433;databaseName=zltomcat"

                            connectionName="sa" connectionPassword="zl"

 userTable="tomcat_user" userNameCol="userName" userCredCol="pass"

 userRoleTable="tomat_user_role" roleNameCol="roleName"

/> 

 9:以上配置文件重要参数注释如下:

    driverName:驱动名,不同的数据库不同

    databaseName:数据库名

    connectionName:数据库登陆名

    connectionPassword:数据库登陆密码

    userTable:用户表名

    userNameCol:用户名字段

    userCredCol:用户密码字段

    userRoleTable:角色表表名

    roleNameCol:角色字段(role)

10:sqlserver2005jdbc驱动包拷贝到tomcatlib目录下。

11:测试,启动tomcat,在浏览器地址栏输入:http://localhost:8080/,点击:Tomcat Manager 输入数据库中设置的用户名和密码。登陆成功,进入到tomcat的管理员界面。

三:其他三种安全域介绍

   1:内存域(MemoryRealm),完全通过xml配置文件完成, 对应资源访问权限有三种方式:BASICDIGESTFORM

   2 数据源域(DataSourceRealm),通过JNDI数据源访问存在数据库中的安全验证信息。

   3 JNDI(JNDIRealm),通过JNDIproveider访 问存放在基于LDAP的目录服务器中的安全验证信息。 

   4:以上更多的信息请参考: http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html官方网站。