java卡安全域_JavaWeb-Tomcat安全域

概述

安全域是Web服务器用来保护Web资源的一种机制.

在安全域中可以配置安全验证信息,即用户信息(包括用户名和口令),以及用户和角色的映射关系.

每个用户可以有一个或多个角色,每个角色限定了可访问的Web资源,一个用户可以访问其拥有的所有角色对应的资源.

安全域是Tomcat内置的功能,在org.apache.catalina.Realm接口中声明了把一组用户名,口令及所关联的角色集成到Tomcat中的方法.

安全域的类型

JDBCRealm: 通过JDBC驱动程序访问存放在数据库中的安全验证信息

DataSourceRealm: 通过JNDI数据源访问存放在数据库中的安全验证信息

JNDIRealm: 通过JNDI provider访问存放在基于LDAP的目录服务器中的安全验证信息

MemoryRealm: 在初始化阶段,从XML文件中读取安全验证信息,并把它们以一组对象的形式存放在内存中

JAASRealm: 利用JAAS(Java Authentication & Authorization Service,Java验证与授权服务)框架进行验证

不管配置哪一种类型的安全域,都包含以下步骤

在Web应用的WEB-INF/web.xml文件中为Web资源设置安全约束

在Tomcat的$CATALINA_HOME/conf/server.xml配置文件中,或者Web应用的META-INF/contex.xml文件中配置元素,并在这个元素中指定安全域的类名及相关的属性.形式如下:

可以嵌入到3中不同的容器元素中,这直接决定的作用范围:

嵌入位置

描述

嵌入到元素中

中所有虚拟主机上的所有Web应用共享这个Realm,例外情况是在这个下的活元素下还定义了自己的Realm元素

嵌入

下的所有Web应用共享这个Realm,例外情况是在这个下的元素下还定义了自己的Realm元素

嵌入到

只有元素对应的Web应用才能使用这个Realm

为Web资源设置安全约束

无论是哪种域,都必须先配置安全约束.用来定义受保护的资源,允许访问的角色及给用户提供登录渠道.

在Web应用的$project_base_dir/src/main/webapp/WEB-INF/web.xml文件中加入,和元素.

配置好了安全约束,就可以试试配置各个安全域了.

内存域

由org.apache.catalina.realm.MemoryRealm类来实现,从一个XML文件中读取用户信息,在默认的情况下,改XML文件为$CATALINA_HOME/conf/tomat-users.xml,参考:Tomcat用户角色配置

JDBC域

JDBC域通过JDBC驱动程序访问存放在关系型数据库中的安全验证信息.

用户数据库结构

一般需要在数据库中创建两张表:users和user_roles,这两张表包含了所有的安全验证信息.

其实表名列名也可以自由命名,但需要与元素的对应的属性值保持一致.

users

字段

字段类型

描述

user_name

varchar(15)

用户名

user_pass

varchar(15)

密码

user_roles

字段

类型

描述

user_name

varchar(15)

用户名

role_name

varchar(15)

角色

配置元素

当用户数据库创建好后,应该把数据库的驱动程序(jar)文件复制到$CATALINA_HOME/lib目录中,然后再在$CATALINA_HOME/conf/server.xml 文件的/或元素内加入如下元素:

driverName="org.gjt.mm.mysql.Driver"

connectionURL="jdbc:mysql://localhost:3306/authority?user=dbuser&password=dbpass"

userTable="users" userNameCol="user_name" userCredCol="user_pass"

userRoleTable="user_roles" roleNameCol="role_name"/>

表明用户在输入用户名密码后与端口号为3306的MySQL中找到authority数据库,查找users和user_roles两张表对应的信息是否一致,一致则放行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值